如何使用自定义onClick
在ListFragment
的列表项的多个子视图中捕获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_status
和event_members
点击次数。
答案 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
}
}
希望这可以提供帮助