如何知道listView行的哪个视图已被点击?

时间:2011-10-27 07:02:15

标签: android

我有一个列表视图。这个列表视图的每一行都是以下布局。我怎么知道哪个 视图,单击了ImageView(buddy_row_image)或TextView(chat_msg_count)用户。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="40dp"
   android:background="@drawable/cell"

   >

    <ImageView
       android:id="@+id/buddy_row_image"
       android:layout_gravity="center_vertical"
       android:layout_marginLeft="20dp"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginRight="2dp"
       />
    <TextView 
        android:text="1"
        android:textStyle="bold"
        android:gravity="center_vertical|center_horizontal"
        android:id="@+id/chat_msg_count"
        android:background="@drawable/tag"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </TextView>

</LinearLayout>

3 个答案:

答案 0 :(得分:2)

如果我听到你说对了,每行都有一个imageview和一个textview,你希望能够点击imageview或textview,然后看看textview或imageview在listview中包含哪个位置,这是怎么回事你这样做:

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.your_layout_for_each_row, null);
        }

        TextView text = (TextView) v.findViewById(R.id.your_text);
        ImageView img = (ImageView) v.findViewById(R.id.your_image);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Log.d("TAG", "position: " + position);
            }
        });
        return v;

你将使用onclicklistener为ImageView做同样的事情。

答案 1 :(得分:1)

我同意Carnal。快速提示,因为您只使用imageview和textview,您可以使用SimpleAdapter让您的生活更轻松......

SimpleAdapter adapter = new SimpleAdapter(this, SomeHashMap, R.layout.list_row, new String[]{"img","text"}, new int[]{R.id.image,R.id.textviewid});

  ListView list = (ListView) findViewById(R.id.listView1);    
  list.setAdapter(adapter);

  list.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
       // capture int position and use that to determine which row was selected
... and so on

此外,我最终制作了一个附加了键值的散列图,例如

map.put("person","My Name");

然后使用像....一样点击时检查名称。

if (map.get(position).get("person").equals("My Name"))
//do something

如果这令人困惑,那么只需谷歌“android listview simpleadapter”,你应该找到更多深度文章/教程。

答案 2 :(得分:0)

您可以按照this

捕获onClickEvent

在适配器中设置setOnClickListener。

相关问题