最佳答案
我有一个 ListView
,其中列表中的每个元素都包含一个 TextView 和两个不同的按钮:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
通过这段代码,我可以为整个项目创建一个 OnItemClickListener
:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
但是,我不希望整个项目是可点击的,而只是每个列表元素的两个按钮。
因此,我的问题是,如何用以下参数为这两个按钮实现 onClickListener:
int button
(已单击元素的哪个按钮)int position
(这是按钮单击发生的列表中的元素)更新: 我找到了一个解决方案,就像我在下面的回答中描述的那样。现在我可以通过触摸屏点击/点击按钮。但是,我不能用轨迹球手动选择它。它总是选择整个列表项,然后直接进入下一个列表项,忽略按钮,即使我为 getView()
中的按钮设置了 .setFocusable(true)
和 setClickable(true)
。
我还将这段代码添加到我的自定义列表适配器:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
这导致根本不再有任何列表项可选。但是它没有帮助使嵌套按钮可选。
有人知道吗?