【问题标题】:IndexOutOfBoundsException in a ListView with checkbox带有复选框的 ListView 中的 IndexOutOfBoundsException
【发布时间】:2016-01-01 18:56:15
【问题描述】:

我在列表视图的自定义数组适配器中放置了一个复选框。当我选中复选框时,适配器工作正常。但是当我尝试以随机方式取消选中该复选框时,应用程序会抛出。

这是我的代码供您参考:

holder1.chckbx1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if (isChecked) {
            Log.i("checked", "checked");
            positionArray.set(position, true);
            broadCastDetailsLists.add(new BroadCastDetailsList(cpsId2, cpsType2, position, cpsName,handShakeStatus, favouriteStatus));

            sendEnquiry.add(new Q2_SendEnquiryList(searchresultList.get(position).getCpsId(), searchresultList.get(position).getCpsName()));

        } else {
            Log.i("unchecked", "unchecked");
            positionArray.set(position, false);
            broadCastDetailsLists.remove(position);
            sendEnquiry.remove(position);
        }
    }
});

还有我的log 供您参考

【问题讨论】:

  • 堆栈跟踪是什么样的?没有它,很难判断哪个呼叫失败了。 (鉴于您显示的代码,我不希望它是一个超出范围的 string 索引......)

标签: android listview exception checkbox android-arrayadapter


【解决方案1】:

你的逻辑有问题。选中复选框时,您只需将数据添加到列表中,而取消选中时删除索引。

假设您选中位置 1 的项目。broadCastDetailsListssendEnquiry 现在的大小为 1。如果取消选中相同的复选框,则会删除位置 1,从而删除 IndexOutOfBoundsException

【讨论】:

  • 是的,这就是问题所在。现在我已经更改了从列表中删除的逻辑,它现在可以正常工作了。
【解决方案2】:

确保您的 ArrayList 数据未找到或为空,首先打印列表数据并检查数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-09
    • 2011-09-15
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多