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

来源:互联网 发布:卖家怎样开通淘宝达人 编辑:程序博客网 时间:2024/06/03 14:53

这里我想做一个手动刷新的动作,所以才有了这个,之后在学习下做一个USB插拔的监听

//重新填充public void ReSetAdapater() {    adapater.notifyDataSetChanged();    adapater = new MusicAdapater(this, MusicUtil.getMusicInfos(this));    mListView.setAdapter(adapater);}//清空listviewpublic 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);}