监听模式(Listener)在Music中的应用
来源:互联网 发布:软件公寓 编辑:程序博客网 时间:2024/06/14 11:46
在Music中,播放界面点击列表发出intent跳转至TrackbrowserActivity,在该界面中,判断intent中的Action,如果是ectionmode,则可以随意拖动item的顺序,效果很顺滑。
((TouchInterceptor) mTrackList).setDropListener(mDropListener);
((TouchInterceptor) mTrackList).setRemoveListener(mRemoveListener);
mTrackList.setDivider(null);
mTrackList向下转型至TouchInterceptor。TouchInterceptor extends ListView。在这设置了监听器,如下:
private TouchInterceptor.DropListener mDropListener =
new TouchInterceptor.DropListener() {
public void drop(int from, int to) {
if (mTrackCursor instanceof NowPlayingCursor) {
// update the currently playing list
NowPlayingCursor c = (NowPlayingCursor) mTrackCursor;
c.moveItem(from, to);
((TrackListAdapter)getListAdapter()).notifyDataSetChanged();
getListView().invalidateViews();
mDeletedOneRow = true;
} else {
// update a saved playlist
MediaStore.Audio.Playlists.Members.moveItem(getContentResolver(),
Long.valueOf(mPlaylist), from, to);
当满足条件后就会调用drop方法。在TouchInterceptor中:首先将监听器赋值,
public void setDropListener(DropListener l) {
mDropListener = l; }
public boolean onTouchEvent(MotionEvent ev){
..............
if (mDropListener != null && mDragPos >= 0 && mDragPos < getCount()) {
mDropListener.drop(mSrcDragPos, mDragPos);
}
当满足判断条件时,调用mDropListener的drop方法。而实际上这是一个接口回调,mDropListener是DropListener的一个引用。
public interface DropListener {
void drop(int from, int to);
}
最后回调TrackborwserActivity中的mDropListener 的drop实现方法,完成整个监听的过程。
在整个android系统中,存在着大量的设计模式,学习好设计模式对代码架构可以有很好的把握。
最后附上增加版的拖动item重新排序listview的列子
http://www.eoeandroid.com/thread-273713-1-1.html
- 监听模式(Listener)在Music中的应用
- 监听者模式(listener)(c++实现)
- 监听者模式(listener)(c++实现)
- 监听者模式(listener)(c++实现)
- 监听器(Listener)在开发中的应用
- 监听器(Listener)在开发中的应用
- 监听器(Listener)在开发中的应用(一)
- 监听器(Listener)在开发中的应用(二)
- Listener与Filter在开发中的应用
- 如何在Listener监听中使用spring容器中的内容
- 添加监听(Listener)
- Java Web 中的监听(Listener)
- java事件监听机制,spring中的event listener模式和解耦
- [JAVA]Listener监听模式的学习
- Jsp/Servlet中的Listener事件监听
- Listener(监听)
- Servlet 中的 Listener 的应用
- Servlet 中的 Listener 的应用
- 构造UTF8的std::string
- python中os.system()的返回值
- 使用ldap登录服务器
- linux驱动中断处理_tasklet部分
- iPhone像素点和常用控件尺寸
- 监听模式(Listener)在Music中的应用
- poj3173
- 【MySQL 技巧分享】 mysql -e 加 v 简化代码
- Intellij idea工具如何进行项目间的依赖和打.jar包
- 关于TCP握手协议的学习
- 世纪末的星期
- Sencha发布移动HTML5图表库
- poj1922
- java第十五天_Map集合,