0

我有一个主屏幕小部件,它加载了一个完全启动并运行的自定义视图列表。数据由自定义后端提供,当我通过自定义小部件按钮刷新它时,新项目会正确反映在小部件的列表中。

我注意到的一件事是主屏幕小部件缺乏对小部件(视图)的支持。我注意到缺少的一个领域是关于 ListViews,因为我无法实现 ViewHolder 模式。主要问题是 getViewAt() 方法仅提供位置作为参数,这与常规 ListAdapter 不同,后者还在其 getView() 方法中提供了 convertView。RemoveViewFactory 类的示例如下所示:

class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory {
    private static final int mCount = 10;
    private List<WidgetItem> mWidgetItems = new ArrayList<WidgetItem>();
    private Context mContext;
    private int mAppWidgetId;

    public StackRemoteViewsFactory(Context context, Intent intent) {
        mContext = context;
        mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
            AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    ...
    public RemoteViews getViewAt(int position) {   
        // Construct a remote views item based on the app widget item XML file, 
        // and set the text based on the position.
        RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item);
        rv.setTextViewText(R.id.widget_item, mWidgetItems.get(position).text);

        ...
        // Return the remote views object.
        return rv;
    }
}

有没有办法用主屏幕小部件和 RemoteViews 实现这种模式?

4

1 回答 1

1

不,原因很简单,你没有任何意见。主屏幕有视图。a 背后的要点ViewHolder是缓存findViewById()查找,这些查找发生在主屏幕的过程中,而不是您的过程中。

于 2016-02-09T18:08:51.410 回答