内部视图的自定义ListActivity和onListItemClick

时间:2011-06-27 09:29:47

标签: android listview listactivity android-arrayadapter

我有自定义ListView和自定义适配器扩展ArrayAdapter。 ArrayAdapter使用两个视图来膨胀xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight">

    <TextView android:id="@+id/filePickerTextView1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:focusable="true" android:text="item" />

    <ImageView android:layout_width="wrap_content"
        android:focusable="true" android:src="@drawable/icon"
        android:layout_height="fill_parent" android:id="@+id/filePickerImageView1"
        android:layout_alignParentRight="true" android:layout_alignRight="@android:id/text1"></ImageView>

</RelativeLayout>

在ListActivity方法onListItemClick我正在获取RelativeLayout视图。我需要的是,知道点击了哪个确切的视图(TextView或ImageView)。我可以通过设置监听器来获取适配器,但我需要在ListActivity中使用它。原因是,我需要根据点击的视图提升setResult。

2 个答案:

答案 0 :(得分:1)

在自定义适配器类中,您可以使用下面的代码然后单击Textview,相应地您将获得toast消息并单击imageview然后相应地获取toast消息。

 holder.filePickerImageView1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // toast message;

        }
    });

  holder.filePickerTextView1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // toast message;

        }
    });

答案 1 :(得分:1)

5个月后,我回到了我的项目,我找到了解决问题的方法。 最简单的方法是将上下文传递给自定义适配器。

https://stackoverflow.com/a/4197364/214081