0

我有 ListView 项目:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layerItem"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    <ImageView
            android:layout_width="55dip"
            android:layout_height="fill_parent"
            android:id="@+id/layerImage"/>
    <TextView
            android:id="@+id/layerTitle"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:gravity="center_vertical"
            android:paddingLeft="6.0dip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:minHeight="?android:attr/listPreferredItemHeight"/>
</LinearLayout>

如何听触摸 ImageView 并获取项目编号?

私有 AdapterView.OnItemClickListener mLayersListListener = new AdapterView.OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
    //here touch on ImageView or TextView?
}

};

4

1 回答 1

1

ImageButton可能是比ImageView更好的选择。无论哪种方式:

ImageButton mButton = (ImageButton)findViewById(R.id.layerImage);
mButton.setTag(new Integer(position));  // position is the item number
mButton.setOnClickListener (new OnClickListener() {
 public void onClick(View v)
 {
   // handle the image click/touch
   Integer position = (Integer)v.getTag();
 }
});

通过“获取项目编号”我假设您的意思是获取列表视图位置?使用标签对象是传递此信息的一种可能方式。

但是为什么不在你的列表中使用 setOnItemClickListener()呢?用户可以单击图像或文本,但此处理程序干净利落地传递列表项的位置:

ListView mList = ...;
mList.setOnItemClickListener(new OnItemClickListener()
{
 public void onItemClick(AdapterView<?> parent, View view, int position, long id)
 {
   // position is the item number
 }
});

}

于 2012-08-09T17:53:35.083 回答