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

这里我想做一个手动刷新的动作,所以才有了这个,之后在学习下做一个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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值