我的适配器工作正常,它显示我使用列表等给它的所有项目。唯一的问题是除非我打开和关闭设备屏幕,否则项目永远不会显示!只有这样才能调用onBindViewHolder方法。
我用来创建和设置适配器的代码。它使用EventBus库从另一个线程运行,因此runOnUiThread
@Subscribe
public void onMessageEvent(EchoListEvent event){
final EchoListEvent eventt = event;
runOnUiThread(new Runnable() {
@Override
public void run() {
final EchoListAdapter adapter = new EchoListAdapter(eventt.getList(), R.layout.location_item);
final RecyclerView listview = (RecyclerView) findViewById(R.id.main_recycler_view);
listview.setAdapter(adapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
listview.setLayoutManager(layoutManager);
}
});
}
来自资源.xml的RecyclerView
<android.support.v7.widget.RecyclerView
android:id="@+id/main_recycler_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
我还尝试使用Adapter#notifyDataSetChanged强制onBindViewHolder调用,但没有任何反应。
答案 0 :(得分:0)
我自己找到了答案。基本上,我传递给事件的列表是由一个在另一个线程中运行的回调填充的。回调使用的API有点慢,因此列表仅在事件已发布后填充。解决方案是在发布事件之前等待回调完成
TL; DR:线程很难