android - 如何知道单击的特定 ListView 项目中的哪个 View

标签 android listview adapter

我有一个 ListView,它带有我自己的从 BaseAdapter 派生的自定义适配器。 ListView 中的每个项目都有子项目,例如 ImageViewTextView

我如何知道用户点击了这些子项目中的哪一个?例如,是否可以在 getView 函数中附加一个监听器,或者这可能是个问题?

/亨里克

编辑:目前我在包含ListView 的 Activity 中有一个onItemClick。有什么好方法可以通过检查 onItemClick 中的参数来了解 ListView 中特定项目中的哪个子项目已被按下。

@Override 
public void onItemClick(AdapterView<?> a, View v, int pos, long id) {
.
.
}

最佳答案

我使用了 Miga's Hobby Programming 中的想法.

关键是从新的 onClick 监听器调用 performItemClick()。这会将点击传递给已用于 ListView 的 onItemClick()。它是如此快速和简单,我觉得我在作弊。

这是来自列表适配器的 getView():

@Override
public View getView(final int position, View convertView, final ViewGroup parent) {

    // Check if an existing view is being reused, otherwise inflate the view
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.one_line, parent, false);
    }

    // This chunk added to get textview click to register in Fragment's onItemClick()
    // Had to make position and parent 'final' in method definition
    convertView.findViewById(R.id.someName).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((ListView) parent).performItemClick(v, position, 0);
        }
    });
    // do stuff...
}

还有 onItemClick():

@Override
public void onItemClick(AdapterView adapterView, View view, int position, long id) {

    long viewId = view.getId();

    if (viewId == R.id.someName) {
        Toast.makeText(getActivity(), "someName item clicked", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(getActivity(), "ListView clicked: " + id, Toast.LENGTH_SHORT).show();

   }
}

关于android - 如何知道单击的特定 ListView 项目中的哪个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527101/

相关文章:

android - tgkill - Android 8.0 Samsung S8 上的 native 错误

android - 为什么 (ListView)findViewById 返回 null?

android - 动态更改 ListView 的行布局

java - Vector中排序的实现

android - 我需要在 Xamarin Forms 按钮内设置格式化文本(两种不同大小)

android - Android 构建工具是否需要为每个新项目下载 Gradle?

android - 列出具有交替颜色的项目

android - adapter.notifyDataSetChanged 只有创建 View 层次结构的原始线程可以触及它的 View

android - 如何在 Android 上用 Java 发送 ICMP 数据包(带有关联的 TTL 值)?没有第 3 方库是否可能?如果没有,你用什么?

android - 从 Azure 数据库本地存储自定义 ListView