主屏幕小部件,listView 显示“正在加载”
Posted
技术标签:
【中文标题】主屏幕小部件,listView 显示“正在加载”【英文标题】:Homescreen widget, listView shows "Loading" 【发布时间】:2014-03-20 09:42:39 【问题描述】:首先,一张图片说一千个字:
尽管 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<DBItemModel> 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
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants">
<TextView
android:id="@+id/tvListItem"
style="@style/text_list"
android:layout_
android:layout_
android:gravity="center_vertical"
android:minHeight="?attr/dropdownListPreferredItemHeight" />
</RelativeLayout>
我的 4 个项目肯定没有文本加载,我不知道这是从哪里来的。
有人能指出做错了什么吗?
谢谢
【问题讨论】:
【参考方案1】:这个答案帮助了我 https://***.com/a/23122006/2051381
我必须从我的 remoteViewsFactory 类的 getViewTypeCount() 方法中返回 1 而不是 0
【讨论】:
【参考方案2】:检查您是否使用了不受支持的视图。
就我而言,我在布局中使用View
作为分隔符。并没有意识到它不是supported views 之一。
我刚刚删除了它,小部件按预期运行。
【讨论】:
如果你使用ListView
,你可以使用它的divider属性来达到同样的效果。
我知道,但是我从回收的视图中复制了布局,并认为不支持视图。【参考方案3】:
我不得不删除
android:minHeight="?attr/dropdownListPreferredItemHeight"
从列表项的布局来完成这项工作
【讨论】:
哥们,此时此刻,你对我来说就像上帝一样【参考方案4】:我也是来这里说的:
我将列表项的背景设置为 ?attr/selectableitembackground
【讨论】:
【参考方案5】:如果有人遇到与此相同的问题,并且您使用的是自定义启动器,请尝试使用默认启动器。
【讨论】:
以上是关于主屏幕小部件,listView 显示“正在加载”的主要内容,如果未能解决你的问题,请参考以下文章
颤动 - 是否可以在同一屏幕上沿ListView显示小部件?
如何在android中获取主屏幕小部件列表项的点击事件[重复]