Android修炼之道—Adapter与观察者模式(100 喵喵币)
2014-05-07 10:59
197 查看
今天做一个经验小结,我之前在做聊天的状态时,采用了一种很愚蠢的方法。
1 是 主线程将 listview 和
handler
作为参数传入Adapter构造器,Adapter在点击按钮播放语音的后,会再将handler传给自定义的单例MediaPlayer,
MediaPlayer改变播放状态,发消息给handler使主线程的改变界面。
2 主线程 发送按钮,来改变适配器中某一view 的信息,如 发送成功,发送失败,正在发送。我用了还是
向 handler 发送消息 来改变适配器界面,我用的方法更笨,在Adapter的 getView()中 将holder 和 view 都存储起来,
在Adapter里实现 两个方法 getViewAtPosition()和 getHolder();发信息是用msg.what,arg1,arg2,obj来传,
主界面在handler接收消息里来改变holder的某个控件。
小结:真是个很笨的方法,不是吗?
暮然回首:只要在Adapter的item设置状态码,Adapter的notifyDataSetChanged()不是可以解决这些问题吗?
问题是,这样做高效吗?看SDK发现Adapter及notifyDataSetChanged()采用观察者模式,效率绝对没问题。
观察者模式
观察者模式作为JDK使用最多的模式,也是许多开源项目中常用的模式,随后再写。
1 是 主线程将 listview 和
handler
作为参数传入Adapter构造器,Adapter在点击按钮播放语音的后,会再将handler传给自定义的单例MediaPlayer,
MediaPlayer改变播放状态,发消息给handler使主线程的改变界面。
2 主线程 发送按钮,来改变适配器中某一view 的信息,如 发送成功,发送失败,正在发送。我用了还是
向 handler 发送消息 来改变适配器界面,我用的方法更笨,在Adapter的 getView()中 将holder 和 view 都存储起来,
在Adapter里实现 两个方法 getViewAtPosition()和 getHolder();发信息是用msg.what,arg1,arg2,obj来传,
主界面在handler接收消息里来改变holder的某个控件。
小结:真是个很笨的方法,不是吗?
暮然回首:只要在Adapter的item设置状态码,Adapter的notifyDataSetChanged()不是可以解决这些问题吗?
问题是,这样做高效吗?看SDK发现Adapter及notifyDataSetChanged()采用观察者模式,效率绝对没问题。
观察者模式
观察者模式作为JDK使用最多的模式,也是许多开源项目中常用的模式,随后再写。
相关文章推荐
- 最常用的Java设计之一 观察者模式 在android中的实例 ListView Adapter机制
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android 适配器(Adapter)、观察者(Observer) 模式
- Android ListView与BaseAdapter的观察者模式实现
- android中对观察者模式的使用,Adapter中的观察者
- Android修炼之道—布局优化( 100 喵喵币)
- android 中ListView Adapter内所蕴含的观察者模式
- android观察者模式初学笔记
- VTK修炼之道71:交互与Widget_观察者/命令模式
- Android Observer观察者模式
- Android设计模式系列--观察者模式
- (转)ListView BaseAdapter中的观察者模式
- Android之线程安全的单例模式,Adapter注意事项之引用传值
- java/android 设计模式学习笔记(2)---观察者模式
- 通过Observer(观察者模式)来看Android的MVC
- Android设计模式之观察者模式
- android 观察者模式