Список виджетов на главном экране Android

У меня есть виджет домашнего экрана, загружающий список пользовательских представлений, полностью запущенный и работающий. Данные поступают из пользовательского бэкэнда, и новые элементы правильно отображаются в списке виджета, когда я обновляю его с помощью кнопки пользовательского виджета.

Одна вещь, которую я заметил, заключается в том, что виджет домашнего экрана не поддерживает виджеты (представления). Одна область, которую я заметил, отсутствовала в отношении ListView, в которой я не смог реализовать шаблон ViewHolder. Основная проблема заключается в том, что метод getViewAt() предоставляет позицию только в качестве параметра, в отличие от обычного ListAdapter, который также предоставляет convertView в своем методе getView(). Пример класса 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?

1 ответ

Решение

Нет, по той простой причине, что у вас нет никаких взглядов. На главном экране есть виды. Точка позади ViewHolder кешировать findViewById() поиски, и они происходят в процессе домашнего экрана, а не у вас.

Другие вопросы по тегам