这是我列表工厂类中的小部件列表视图。
我需要使用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;
}
}