Android EventBus框架的使用(二)
2016-07-24 00:32
579 查看
第一篇文章介绍了基础,从下面的连接即可进入
http://blog.csdn.net/y874961524/article/details/51946238
这次实现一个选项卡的效果,每次单击时,切换对应的Item
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/28/acf224e7173b9c54d4909d1adc84bd86)
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); } }
相关文章推荐
- Android关于Context的简单理解
- Android Studio 编译报错:Manifest merger failed with multiple errors, see logs
- Android异步任务处理框架AsyncTask源码分析
- 输入手机号码自动填充空格 变成3-4-4格式
- 读懂 Android 中的代码混淆
- Android自定义view详解
- Android常用颜色列表——color.xml
- Android实例——简易计算器
- android studio jar 包添加 的 三种方法
- MD5 的加密
- Android 通过Intent bundle 传递复杂对象
- Scroller的使用用法
- android ERROR: unknown virtual device name
- Android开发实现二级联动下拉列表
- android获取状态栏高度
- 获取屏幕标题栏和状态栏的高度和实现图片的拖拽效果,图片的缩放效果
- android自定义控件-AutoScrollViewpager(无限滚动轮播控件)
- Android基础知识(简单实例计算器)
- Android基础知识总结---四大组件之一ContentProvider(一)
- 最简单也最难——如何获取到Android控件的高度