我有一个列表视图,在每个单元格中都有一个带有7个按钮的RelativeLayout。在滚动列表之前,对于所有可见的listView项,所有按钮都可以正常工作(单击时都会触发),但是在listView滚动之后,一些项目会变成不可点击的(无论我单击项目中的哪个按钮),而且它是随机的,在另一个滚动之后,同一项可以变为可单击的,而其他的可以在转到不可单击之前变为不可单击。我已经注意到,它通常发生(项目变成不可点击)后,滚动所有的方式。另一件事,我已经注意到,很少(在4-5不成功的点击后,在一排)按钮触发几次在一排(就像它被延迟)。但通常情况下,它不会发生在一些不成功的点击。
在我的原始代码中,我创建了一个arrayList of RelativeLayouts (每个用于listView项),并将arrayList放入适配器中。对于每7个按钮(每个单元格),我设置7个in,对应于它们在数组列表中的位置。这样,我在主类中实现了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方法中为适配器本身中的按钮处理了getView事件(仅针对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);
}我也有同样的结果。什么都没变。
我在互联网上到处找过,似乎只有我一个人遇到了这样的问题。
有人知道这里有什么问题吗?如果需要其他代码,请随时询问。
发布于 2018-01-07 08:10:40
我没有找到原因,但我把ListView改为了ScrollView,现在一切都很好。也许ListView中有某种bug,但在这种情况下,我想知道为什么我没有发现任何关于它的抱怨。总之,与ScrollView一起工作是非常完美的。
https://stackoverflow.com/questions/48041324
复制相似问题