Android EventBus框架的使用(二)

来源:互联网 发布:小七网络 编辑:程序博客网 时间:2024/05/12 00:09

第一篇文章介绍了基础,从下面的连接即可进入
http://blog.csdn.net/y874961524/article/details/51946238

这次实现一个选项卡的效果,每次单击时,切换对应的Item
这里写图片描述

ListFragment 中创建列表

/** * Created by yangtianrui on 16-7-23. * 注册EventBus */public class ItemListFragment extends ListFragment {    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        EventBus.getDefault().register(this);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        new Thread() {            @Override            public void run() {                try {                    sleep(2000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                // 模拟延时,在后台发送数据                EventBus.getDefault().post(new Event.ItemEvent(Item.ITEMS));            }        }.start();    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return super.onCreateView(inflater, container, savedInstanceState);    }    @Override    public void onDestroy() {        super.onDestroy();        EventBus.getDefault().unregister(this);    }    /**     * 在主线程中订阅事件     */    @Subscribe(threadMode = ThreadMode.MainThread)    public void onEventSetAdapter(Event.ItemEvent event) {        setListAdapter(new ArrayAdapter<>(getActivity()                , android.R.layout.simple_list_item_1, android.R.id.text1, event.getmList()));    }    /**     * 发送位置信息     */    @Override    public void onListItemClick(ListView l, View v, int position, long id) {        super.onListItemClick(l, v, position, id);        // 点击时发送事件        EventBus.getDefault().post(getListView().getItemAtPosition(position));    }}

DetailFragement中接收ListFragment post过来的事件

/** * Created by yangtianrui on 16-7-23. */public class ItemDetailFragment extends Fragment {    private TextView mTvText;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View root = inflater.inflate(R.layout.fragment_detail, container, false);        mTvText = (TextView) root.findViewById(R.id.id_tv_text);        return root;    }    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        EventBus.getDefault().register(this);    }    @Override    public void onDestroy() {        super.onDestroy();        EventBus.getDefault().register(this);    }    @Subscribe(threadMode = ThreadMode.MainThread)    public void onEventSetText(Item item) {        String text = item.content;        mTvText.setText(text);    }}
0 0
原创粉丝点击