listView中的按钮并不总是被触发

时间:2017-12-31 09:17:23

标签: android listview onclick

我有一个listview,在每个单元格中都有一个带有7个按钮的RelativeLayout。 在滚动列表之前,对于所有可见的listView项目,所有按钮都正常工作(点击时全部触发),但滚动listView后,某些项目变为不可点击(无论我点击的项目中的哪个按钮),它都是'随机,在另一个滚动后,相同的项目可以转动可点击,而其他之前转为不可点击。 我注意到它一直在向上滚动后发生(项目转动不可点击)。 我注意到的另一件事很少(连续点击4-5次失败后)按钮连续几次触发(就像它被延迟了)。但通常情况下,在多次失败的点击后都不会发生这种情况。

在我的原始代码中,我创建了一个RelativeLayouts的arrayList(每个用于listView Item),并将arrayList放入适配器中。对于每7个按钮(对于每个单元格),我设置了7个ID,这些ID对应于它们在arraylist中的位置。 通过这种方式,我在主类中实现了OnClick事件。 这是3个按钮(7个中的一个):

for (int i = 0; i < EXPEND_BUTTONS.length; i++) {
            if (view.getId() == EXPEND_BUTTONS[i]) {
                handleEmojiPanel(i);
                break;
            }
            if (view.getId() == BUTTONS[i] || view.getId() == IMAGES[i]) {
                ShowTopItem item = new ShowTopItem(getActivity(), i);
                item.show();
                break;
            }
        }

由于问题我改变了代码。 我在getView方法中为适配器本身的按钮处理了OnClick事件(仅限2个按钮):

public View getView(final int position, View convertView, ViewGroup parent) {
        pos = position;
        Button btn = (Button) listOfObjects.get(position).getChildAt(0);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ShowTopItem item = new ShowTopItem(getActivity(), position + listChosen);
                item.show();
            }
        });
        Button imageBtn = (Button) listOfObjects.get(position).getChildAt(2);
        imageBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ShowTopItem item = new ShowTopItem(getActivity(), position + listChosen);
                item.show();
            }
        });
        return listOfObjects.get(position);
    }

我有同样的结果。什么都没有改变。

我已经浏览了整个互联网,似乎我是唯一遇到此类问题的人。

我有人知道这里有什么问题吗? 如果需要其他一些代码,请随时询问。

1 个答案:

答案 0 :(得分:0)

我没有找到原因,但我将ListView更改为ScrollView,现在一切正常。 也许ListView中存在某种错误,但在这种情况下,我想知道为什么我没有找到任何关于它的抱怨。 无论如何,与ScrollView完美配合。