• selectAll, unSelectAll两个操作的实现


    private void updateBatchSelectionStatus() {
        ContactListAdapter.ViewHolder viewHolder = null;
        TxrjContact contact = null;
        int size = mContacts.size();
        boolean select = (getSelectCount() == mContacts.size() ? true : false);
        for(int i=0;i<size;i++){
            viewHolder = (ContactListAdapter.ViewHolder)mListView.getChildAt(i).getTag();
            contact = mContacts.get(i);
            contact.setSelected(select);
            viewHolder.select
                    .setImageBitmap(select ? mListAdapter.checkBox
                            : mListAdapter.unCheckBox);
        }
    }

    红色语句出现空指针异常,原因分析:

    mContacts可能有100个TxrjContact,但是mListView不可能一下子有100个child,每次只显示可视区域中的几个view。

    将以上方法改写成

    private void updateBatchSelectionStatus() {
        int size = mContacts.size();
        boolean select = (getSelectCount() != mContacts.size() ? true : false);
        for(int i=0;i<size;i++){
            mContacts.get(i).setSelected(select);
            mListAdapter.notifyDataSetChanged();
        }
    }

    再执行就符合预期效果

    点击事件处理程序

    } else if(v == mSelectAll) {
        updateBatchSelectionStatus();
        updateSelectButtonText();
    }

  • 相关阅读:
    Perforce笔记
    Lumia 800 无法正常开机
    Windows service 中出现Set ServiceLogin 对话框
    华为要求七千员工先辞职再竞岗 补偿费超10亿
    BLOG新址:http://longware.spaces.live.com
    家装(2)
    解脱
    论持久战
    有感于软件项目测试
    THE POEM AS A GIFT FOR MY GF'S BIRTHDAY
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3188896.html
Copyright © 2020-2023  润新知