-1

在过去的 3 个小时里,我一直在努力完成这项工作,如果我忘记发布一些东西,我很抱歉......

这是问题所在:

  • 我正在使用一个 ListView,它有一个自定义的 BuddyArrayAdapter,它会膨胀一个包含并排图像和 CheckedTextView 的 XML。我只想有一个选择,所以我将其设置为使用 SINGLE_CHOICE。

(假装和号是图像,括号是checkedtextview的复选框。)

    //my list looks like this

    & name1Here          []

    & name2Here          []

    & name3Here          []

    & name4Here          []

明天我会发布代码,但这就是我一直在经历的。- 如果我在 listView 的 onItemClick() 中使用 getChildAt(),随机子项会打开和关闭,但经过足够多的点击后,它们最终都会取消选中。- 如果我在适配器的getView() 中实现checkedTextView.onClick(),我会得到列表视图中每一行的nullpointerexceptions。- 如果我做任何其他有意义的事情,在选择一行时,复选框会勾选并立即取消勾选,就像我没有点击一样。但它仍然被“点击”,因为我可以使用 listView.getCheckedItemPosition()

我已经查看了代码,我不再在任何地方调用 toggle() 了。我唯一的 clickListener 在列表中。

基本上,这就是现在的样子

        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            listConversations.setItemChecked(position, true);
            Log.d("<>>>>>>>>>>>>>>>>>>>>>>>>>>>", "listConversations.getCheckedItemPosition() = "+listConversations.getCheckedItemPosition());

            listConversations.


            OnContactClick(position, id);
        }

记录的数字是正确的。然而,即使采用这种愚蠢的方法,CheckedTextView 的可检查部分仍然可以单击/取消标记。这是我今天的最后一次尝试,因为我希望列表视图能够勾选所有其他视图,但没有。要么我有不止一个,要么根本没有。

如果您仍然不明白这个问题 - 我搞砸了什么来获得这个地狱并且无法使复选标记像它应该的那样工作?!?!

请帮忙。我在这件可笑的智障事情上浪费了 3 个小时。生无可恋。

lastminuteadd:看起来我和这个人 ListView 有同样的问题 :setItemChecked 仅适用于标准 ArrayAdapter - 使用自定义 ArrayAdapter 时不起作用?

4

1 回答 1

0

因为没有人回答我想我必须...

诀窍是让 Wrapper 类实现 Checkable。如果缺少一个包装类,则制作包装类......

于 2012-08-21T10:55:40.527 回答