在窗口小部件列表视图中显示应用程序图标

时间:2014-06-11 04:33:43

标签: java android android-listview widget

这是我列表工厂类中的小部件列表视图。

我需要使用row.setImageViewResource(R.id.app_icon,data.loadIcon(packageManager));从包管理器添加我的图标。但它现在允许我因为下面的错误。你们有没有其他方法来解决这个问题?

错误:类远程视图中的方法setImageViewResource无法应用于给定类型;

必需:int,int。

发现:int,Drawable

原因:实际参数Drawable无法通过方法调用转换转换为int。

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class WidgetlistLoader implements RemoteViewsService.RemoteViewsFactory {

private Context ctxt=null;
private int appWidgetId;
private PackageManager packageManager = null;
private List<ApplicationInfo> applist = null;
private ApplicationAdapter listadaptor = null;
private Drawable icon;





public WidgetlistLoader(Context ctxt, Intent intent, List<ApplicationInfo> applist ) {
    this.ctxt=ctxt;
    this.applist = applist;
    appWidgetId=intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
            AppWidgetManager.INVALID_APPWIDGET_ID);
    packageManager = ctxt.getPackageManager();
}



@Override
public void onCreate() {


}

@Override
public void onDataSetChanged() {

}

@Override
public void onDestroy() {

}

@Override
public int getCount() {
    return  ((null != applist) ? applist.size() : 0);
}

@Override
public RemoteViews getViewAt(int position) {



    RemoteViews row = new RemoteViews(ctxt.getPackageName(),
            R.layout.snippet_list_row);


    Log.d("tok", "Calling activity " + row);
    ApplicationInfo data = applist.get(position);

    icon = data.loadIcon(packageManager);

    Log.d("tok", "Calling activity " + data);
    if(null != data) {
        row.setTextViewText(R.id.app_name, data.loadLabel(packageManager));
        row.setImageViewResource(R.id.app_icon,data.loadIcon(packageManager));

    }




    return row;
}

@Override
public RemoteViews getLoadingView() {
    return null;
}

@Override
public int getViewTypeCount() {
    return 1;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public boolean hasStableIds() {
    return true;
}
}

0 个答案:

没有答案
相关问题