这里我想做一个手动刷新的动作,所以才有了这个,之后在学习下做一个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);
}