我想,我的View
ListView
中会显示一个新的Item
,如果我点击这个项目,其中(1)和(2)是点击次数
我可以这样做,但是当我想再次点击这个Item
时,即隐藏新的View
,那么Item
点击就会不再像它应该做的那样做出反应
我在add
权限中执行onItemClickListener
查看操作,直到正确位置
我的代码如下
...
list_view.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("TAG", "onItemClick:: BEGIN");
switch (position) {
case 0 :
Log.i("TAG", "onItemClick:: before addTitle");
showFieldList(view);
Log.i("TAG", "onItemClick:: after addTitle");
break;
...
}
Log.i("TAG", "onItemClick:: END");
}
});
...
我尝试在Log
中显示行为,在第一次点击后,我可以看到我的Log
条目&#34; TAG&#34;使用值
onItemClick:: BEGIN
onItemClick:: before addTitle
onItemClick:: after addTitle
onItemClick:: BEGIN
但是下一次点击没有显示任何内容,正如所说,Item
不再做出反应,但我可以看到我的client_adapter LOG
而只是getGroupView
方法的条目是单击Item
时显示。
我只是想说,如果我附加了ExpandableListView的OnGroupExpand/OnGroupCollapse/OnGroupClick Listeners
,它也会表现得像这样。
总结:我有一个ListView
,如果我点击第一个项目,这个会展开以显示ExpandableListView
,如果我再次点击,这应该会折叠,但这不会#&# 39; t的行为与此类似,因此ExpandableListView
可以控制整个项目。
任何人都可以告诉我,为什么item
失去了对点击的控制权,这是ExpandableListView
FieldList赢得的?
提前谢谢!
其余代码
private View showFieldList(View view) {
// Retrieving Item Layout. (= view Layout)
RelativeLayout item_layout = (RelativeLayout) view.findViewById(R.id.relLayoutDrawer);
// Retrieving "title" Element
TextView title_tv = (TextView)view.findViewById(R.id.title);
View row = View.inflate(context, R.layout.field_list, null);
// Getting Field names
Resources res = getResources();
String fields = res.getString(R.string.fields);
client = (ExpandableListView)row.findViewById(R.id.field_expandable_list);
client.setFocusable(false); //<< ADDED TO WORK
client_adapter = new ClientAdapter(context, fields);
// When I comment this Line, `onItemClick` works
// if not, then client_adapter assummes control
client.setAdapter(client_adapter);
// Setting "Subtitle" under "title" aligning both left borders
params.addRule(RelativeLayout.ALIGN_LEFT, title_tv.getId());
params.addRule(RelativeLayout.BELOW, title_tv.getId());
item_ayout.addView(row, params);
}
这是我的drawer_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relLayoutDrawer"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@android:color/black">
<ImageView
android:id="@+id/icon"
android:layout_width="25dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/title"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:contentDescription="@string/desc_list_item_icon" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toRightOf="@id/icon"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/metallic_silver"
android:gravity="center_vertical"
android:paddingRight="40dp"/>
<TextView android:id="@+id/counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@layout/counter_bg"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="8dp"/>
</RelativeLayout>
答案 0 :(得分:3)
问题的存在是因为您ExpandableListView
嵌套了ListView
。隐藏ExpandableListView
时,只有ListView
收到onClick
个事件,但当它出现时会消耗所有onClick
个事件,因此您的ListView
不会对点击了。
您可以关注此主题:ListView OnItemClickListener Not Responding?
或者只是在其中一条评论中选择momo提供的方法 - 仅使用ExpandableListView
只有更多深度。
答案 1 :(得分:3)
<强>解决!强>
我再次正确地写了onCollapsedGroupListener
,onExpandedGroupListener
和onClickedGroupListener
,我在最后一段代码中添加了下一行
client = (ExpandableListView)row.findViewById(R.id.field_expandable_list);
...
client.setFocusable(false);