EventBus 接收方法中死活不能执行UI更新,这有社么用呢

gexing918 2016-08-21 08:59:51


public class FragmentLeft extends Fragment {

public ListView lv;
LeftAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.text,
container, false);


return rootView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);




new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("33");
list.add("44");
EventBus.getDefault().post(list, "listTag");
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}).start();


}



@Subscriber(tag = "listTag",mode = ThreadMode.MAIN)
private void getData(List<String> list) {

Log.i("mytag", "---- list = " +list.size());

adapter.setData(list);
adapter.notifyDataSetChanged();


//setListAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,android.R.id.text1,list));
}


@Override
public void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
}

这 @Subscriber(tag = "listTag",mode = ThreadMode.MAIN)不是到UI线程了吗,list集合也有数据,但死活就是不走getViwe()
...全文
767 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒冰大神 2017-11-27
  • 打赏
  • 举报
回复
ListView没setAdater(); ListView都没初始化
  • 打赏
  • 举报
回复
EventBus.getDefault().post(list, "listTag"); 这句代码有问题,需要消息包裹下
gexing918 2016-08-24
  • 打赏
  • 举报
回复
上面的代码adater没有被实例化,但实例后,结果也是一样,list列表没数据展示
gexing918 2016-08-24
  • 打赏
  • 举报
回复
这与在activity中adapter.notifydatesetChage()有什么不一样吗
梦境之末lol 2016-08-22
  • 打赏
  • 举报
回复
引用 1 楼 qq_31934293 的回复:
不走getview不是eventbus的问题,应该是你notifyDataSetChanged的问题。 你可以试着在adapter里面写一个这样的方法: public void updateListView(List<String, String> newlist) { this.list = newlist; notifyDataSetChanged(); } 然后在需要更新UI的时候调用这个方法: adapter.updateListView(list);
public void updateListView(List<String> newlist) { this.list = newlist; notifyDataSetChanged(); }
梦境之末lol 2016-08-22
  • 打赏
  • 举报
回复
不走getview不是eventbus的问题,应该是你notifyDataSetChanged的问题。 你可以试着在adapter里面写一个这样的方法: public void updateListView(List<String, String> newlist) { this.list = newlist; notifyDataSetChanged(); } 然后在需要更新UI的时候调用这个方法: adapter.updateListView(list);

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧