没有适配器;使用游标加载器时跳过布局

时间:2015-09-17 13:32:44

标签: android android-recyclerview

我想在onLoadFinished()中使用从CursorLoader返回的游标数据填充RecyclerView。 RecyclerView按预期填充, 但我仍然得到相同的错误“没有适配器附加;跳过布局”

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

    recyclerViewAdapter = new RecyclerViewAdapter(getApplicationContext(), data);

    //attach Layout Manager to RecyclerView
    recyclerView.setLayoutManager(newLinearLayoutManager(getApplicationContext()));  

    //attach adapter to RecyclerView
    recyclerView.setAdapter(recyclerViewAdapter);

}

3 个答案:

答案 0 :(得分:1)

最后几天后我设法找出问题...我做的是在我的onActivityCreated中创建一个我的RecyclerView适配器的实例,只将我的Fragment的上下文传递给Adapter的构造函数并设置适配器到我的RecyclerView

recyclerViewAdapter = new RecyclerViewAdapter(getActivity());
recyclerView.setAdapter(recyclerViewAdapter);

因此,RecyclerView Framework附加了一个适配器,因此没有跳过布局。光标数据ara分别从CursorLoader的onLoadFinished()和onLoadReset()方法传递(交换)到RecyclerView适配器

public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    recyclerViewAdapter.swapCursor(data);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    recyclerViewAdapter.swapCursor(null);
} 

swapCursor方法已经在我的RecyclerView Adapter类中实现了自定义

答案 1 :(得分:0)

无论何时连接适配器,只要包含活动/片段需要布局,即当屏幕首次显示到屏幕时,RecyclerView就需要在屏幕上显示出来。用户。

这意味着在CursorLoader加载完成之前,您的布局可能会显示给用户。为此,RecyclerView将需要查询其适配器以确定要显示的内容。

首次创建Activity / Fragment时,应该设置布局管理器和空适配器,然后在光标加载完成后更新适配器的内容。

答案 2 :(得分:0)

创建视图时显示此错误消息。有一个recyclerview但没有设置适配器。我建议创建并将适配器设置为recyclerview onCreate或onCreateView(如果片段)。然后只需将光标或数据设置为适配器onLoadFinished,并通知适配器数据更改..

或者只是忽略错误消息。错误消息没有造成任何损害; - )