您的位置:首页 > 其它

笔记:接着前面的来,清空listview,刷新音乐列表

2017-06-02 17:41 183 查看
这里我想做一个手动刷新的动作,所以才有了这个,之后在学习下做一个USB插拔的监听

//重新填充
public void ReSetAdapater() {
adapater.notifyDataSetChanged();
adapater = new MusicAdapater(this, MusicUtil.getMusicInfos(this));
mListView.setAdapter(adapater);
}

//清空listview
public void Clean() {
mItemCount = mListView.getCount();
if (mItemCount > 0) {
mListView.setAdapter(null);
}
}


注意,因为清空listview是直接操作的UI,所以不能在主线程直接调用,因此要新开一个新线程

Handler handler = new Handler() {
};
Runnable runnable = new Runnable() {
@Override
public void run() {
mItemCount = mListView.getCount(); // 获得item数
mCount = mService.getMusicCount(); // 这里是之前返回的音乐总数
if (listvisiable == true) {
//防止无限制填充listview 加上限制条件
if (mItemCount != mCount || mItemCount < mCount) {
ReSetAdapater();
mListView.setVisibility(View.VISIBLE);
}
}else if(listvisiable == false){
if (mItemCount != 0) {
Clean();
}
mListView.setVisibility(View.INVISIBLE);
}
handler.postDelayed(this, 500); //500毫秒
}
};


之后记得要在oncreate中启动线程

handler.postDelayed(runnable, 500)

这个是刷新按钮的监听事件

intent.setAction(AppConstant.PlayMsg.STOP); //这是一个停止播放的广播
sendBroadcast(intent);
new Thread() {
public void run() {
try {
listvisiable = false;
sleep(3000); //休眠3秒
startService(serviceIntent); // 刷新一下服务
listvisiable = true;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();


MusicService.java

之前的启动服务是刷新音乐总数

public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "MusicService onStartCommand()");
mCount = MusicUtil.getMusicInfos(this).size();
return super.onStartCommand(intent, flags, startId);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: