Android - 在小部件中使用RecyclerView

时间:2017-08-10 12:31:57

标签: android android-recyclerview widget

我想在小部件中使用recyclerview(就像GMail小部件一样)。我已经使用LinearLayout创建了RecyclerAdapter类,recycleritem布局和窗口小部件布局作为根视图。一切似乎都很好,但我不知道如何从远程视图可用的小部件访问这些布局。这是我遇到的代码:

static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {

        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.schedule_today_widget);

        ScheduleActivity scheduleActivity = new ScheduleActivity();
        Calendar calendar = Calendar.getInstance();
        int day = calendar.get(Calendar.DAY_OF_WEEK);
        int week = scheduleActivity.currentWeek(context);
        ArrayList<Lesson> mDataSet = scheduleActivity.getDataSet(week, day, context);

        mRecyclerView = (RecyclerView) views ...

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    } 

谢谢。

==编辑==
我想从widget的更新方法中访问recyclerview和recycleradapter。在常规活动中,我已经这样做了:

mRecyclerView = (RecyclerView) findViewById(R.id.schedule_monday_card);
        mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(getContext());

    mRecyclerView.setLayoutManager(mLayoutManager);

    mAdapter = new ScheduleRecyclerAdapter(myDatasetMonday, context);
    mRecyclerView.setAdapter(mAdapter);

但我无法在此方法中执行此操作,因为上下文不允许我使用findViewById()或其他任何内容。

==编辑==

好的,现在我应该使用ListView。但我仍然不知道如何从onUpdate方法访问widget的布局中的ListView?

1 个答案:

答案 0 :(得分:2)

根据此App Widgets documentation,使用远程视图时,RecyclerView不在受支持的视图中。我很确定你应该使用ListView,而Gmail和其他类似的小部件也是如此。