我有一个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);
}
我有同样的结果。什么都没有改变。
我已经浏览了整个互联网,似乎我是唯一遇到此类问题的人。
我有人知道这里有什么问题吗? 如果需要其他一些代码,请随时询问。
答案 0 :(得分:0)
我没有找到原因,但我将ListView更改为ScrollView,现在一切正常。 也许ListView中存在某种错误,但在这种情况下,我想知道为什么我没有找到任何关于它的抱怨。 无论如何,与ScrollView完美配合。