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()

解决方案 »

  1.   

    不走getview不是eventbus的问题,应该是你notifyDataSetChanged的问题。你可以试着在adapter里面写一个这样的方法:
        public void updateListView(List<String, String> newlist) {
            this.list = newlist;
            notifyDataSetChanged();
        }然后在需要更新UI的时候调用这个方法:
    adapter.updateListView(list);
      

  2.   


        public void updateListView(List<String> newlist) {
            this.list = newlist;
            notifyDataSetChanged();
        }
      

  3.   

    这与在activity中adapter.notifydatesetChage()有什么不一样吗
      

  4.   

    上面的代码adater没有被实例化,但实例后,结果也是一样,list列表没数据展示
      

  5.   

    EventBus.getDefault().post(list, "listTag");   这句代码有问题,需要消息包裹下
      

  6.   

     ListView没setAdater(); ListView都没初始化