在列表项的子视图中捕获onClick事件

时间:2014-09-07 10:09:03

标签: android

如何使用自定义onClickListFragment的列表项的多个子视图中捕获Adapter个事件?

我希望onClick事件返回项ID和子视图ID。

我的列表项布局是。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:id="@+id/event_status" />

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="7dp"
        android:nestedScrollingEnabled="false">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/event_members" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/event_date"/>
    </LinearLayout>
</LinearLayout>

我想分别抓住event_statusevent_members点击次数。

2 个答案:

答案 0 :(得分:0)

你可以这样做

private class YourAdapter extends ArrayAdapter<...>
{
            TextView event_date = (TextView) convertView.findViewById(R.id.event_date);
            event_date.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });

            TextView event_members = (TextView) convertView.findViewById(R.id.event_members );
            event_date.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });
    }

什么也可能有用,但我认为这样做没有任何好处,看起来不干净:

 @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
                // the same two handler here
                TextView event_members = (TextView) convertView.findViewById(R.id.event_members );
                event_date.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                });
    }

答案 1 :(得分:0)

我个人使用Android左侧菜单,它通过单击自定义适配器来管理不同的片段 https://developer.android.com/training/implementing-navigation/nav-drawer.html

我觉得有趣的部分是

myList.setOnItemClickListener(new myItemClickListener());

然后

private class myItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // your code
    }
}

希望这可以提供帮助