如何在处理ListView.setOnItemClickListener时确定在ListView中单击了哪个View

时间:2016-08-23 15:27:25

标签: android listview

我有一个包含三个TextView的ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/txtProductName"
        android:text="name"
        android:textSize="17sp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_width="0dp"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/txtOPrice"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/txtOPrice"
        android:text="1.60"
        android:textSize="17sp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_blue_dark"
        android:clickable="true"
        android:textStyle="bold"
        android:textColor="#ffffff"

        android:layout_toLeftOf="@+id/txtNetPrice"
        android:textAlignment="center" />

    <TextView
        android:id="@+id/txtNetPrice"
        android:text="1.61"
        android:textSize="17sp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_red_light"
        android:textStyle="bold"
        android:textColor="@android:color/white"
        android:layout_alignParentRight="true"
        android:textAlignment="center" />
</RelativeLayout>

我按如下方式处理ListView项目点击事件:

    adapter = new productListAdapter(this,arrayListProducts);
    listProducts.setAdapter(adapter);

    listProducts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            //how to know which textview was clicked?
        }
    });

我只想知道如何确定点击了哪些TextView?

我是一个新手,搜索了很多但没有发现任何东西。

我会感激任何帮助。提前谢谢!

3 个答案:

答案 0 :(得分:0)

收到回调后,view参数是点击的视图项,i是列表视图中的位置。但是,view是对整个列表项的引用,意味着您的RelativeLayout。从那里你可以在view参数上使用findViewById()找到你需要的特定TextView,这将返回列表项中所需的TextView

答案 1 :(得分:0)

您可以在布局的所有3个文本视图上设置单击侦听器,也可以将标记设置为所有视图。因此,通过使用tag和id,您可以获得单击的视图。

答案 2 :(得分:0)

为什么不将listview与自定义适配器一起使用,并为每个textview添加clicklistner。