gpt4 book ai didi

Android:具有多个可点击按钮的 ListView 元素

转载 作者:IT老高 更新时间:2023-10-28 12:53:44 26 4
gpt4 key购买 nike

我有一个 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(这是列表中发生按钮单击的元素)

更新:我找到了一个解决方案,如下面的回答中所述。现在我可以通过触摸屏单击/点击按钮。但是,我无法使用轨迹球手动选择它。它总是选择整个列表项并从那里直接进入下一个列表项而忽略按钮,即使我设置了 .setFocusable(true)setClickable(true)getView() 中的按钮。

我还将这段代码添加到我的自定义列表适配器中:

@Override
public boolean areAllItemsEnabled() {
return false;
}

@Override
public boolean isEnabled(int position) {
return false;
}

这会导致列表项不再可选择。但它没有帮助使嵌套按钮可选择。

谁有想法?

最佳答案

这个问题的解决方案实际上比我想象的要容易。您可以简单地在自定义适配器的 getView() 方法中为您正在使用的按钮添加 setOnClickListener()。

与按钮关联的任何数据都必须在 getView() 中使用 myButton.setTag() 添加,并且可以通过 view 在 onClickListener 中访问.getTag()

我在 my blog 上发布了详细的解决方案作为教程。

关于Android:具有多个可点击按钮的 ListView 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com