我有一个ListView地方,列表中的每个元素都包含一个TextView和两个不同的按钮.像这样的东西:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以OnItemClickListener为整个项目创建一个:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我不希望整个项目是可点击的,而只是每个列表元素的两个按钮.
所以我的问题是,如何使用以下参数为这两个按钮实现onClickListener:
int button (单击了元素的哪个按钮)int position (这是按钮单击发生的列表中的元素)更新:我找到了一个解决方案,如下面的答案中所述.现在我可以通过触摸屏点击/点击按钮.但是,我无法使用轨迹球手动选择它.它总是选择整个列表项,并从那里直接进入下一个列表项忽略按钮,即使我设置.setFocusable(true)和setClickable(true)按钮getView().
我还将此代码添加到我的自定义列表适配器:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
} …Run Code Online (Sandbox Code Playgroud)