首先,一张图片说千言万语:
虽然getViewAt被称为4项,但是我的光标大小是这样的。
这是代码:
public class WidgetService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { System.out.println("Factory"); return(new WidgetViewsFactory(this.getApplicationContext(), intent)); } }
小部件提供者:
public class WidgetViewsFactory implements RemoteViewsService.RemoteViewsFactory, LNTConstants { private Context context = null; ArrayList items; public WidgetViewsFactory(Context context, Intent intent) { this.context = context; Cursor c = Items.get(context, where); items = Items.getFromCursor(c); } @Override public void onCreate() { /* */ } @Override public void onDestroy() { } @Override public int getCount() { if(items != null) { System.out.println("Count: " + items.size()); return items.size(); } return 0; } @Override public RemoteViews getViewAt(int position) { System.out.println("getViewAt: " + position); ItemBean item = items.get(position); RemoteViews row = new RemoteViews(context.getPackageName(), R.layout.item_list); row.setTextViewText(R.id.tvListItem, item.summary); System.out.println("Widget item title: " + item.summary); 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 false; } @Override public void onDataSetChanged() { // no-op } }
布局:
我的4个项目肯定没有文本加载,我不知道它来自哪里。
有人能指出你做错了什么吗?
谢谢
这个答案帮助了我https://stackoverflow.com/a/23122006/2051381
我必须从我的remoteViewsFactory类的方法getViewTypeCount()返回1而不是0
我不得不删除
android:minHeight="?attr/dropdownListPreferredItemHeight"
从列表项的布局来使这项工作
检查您是否使用不受支持的视图。
就我而言,我在我的布局中使用View作为分隔符。 并没有意识到它不是受支持的观点之一 。
我刚删除它,小部件按预期运行。
我也来这里说:我将列表项的背景设置为
?attr/selectableitembackground