• 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();
    }

  • 相关阅读:
    Repeater嵌套,增删改查综合运用
    DataSet用法(三) 操作数据
    创建DataSet
    DataSet用法(一)
    DataSet使用方法
    DataSet用法(二)
    Repeater嵌套绑定Repeater
    DataBinder.Eval用法
    简单谈谈DataSet与DataTable的区别
    Repeater嵌套的两种方案
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3188896.html
Copyright © 2020-2023  润新知