android – 当我向ListView项添加视图时,此Item不再正确响应
作者:互联网
我想,如果我点击这个项目,我的ListView项目中会出现一个新的视图,其中(1)和(2)是点击
我可以这样做,但是当我想再次点击这个项目,即隐藏新的视图时,Itemclick不再以它应该做的方式做出反应.
我在onItemClickListener中执行添加View操作,直到正确位置
我的代码如下
...
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");
}
});
...
我试图在我的日志中显示行为,并在第一次点击后,我可以看到我的日志条目“TAG”的值
onItemClick :: BEGIN
onItemClick ::在addTitle之前
onItemClick :: addTitle之后
onItemClick :: BEGIN
但是接下来的点击没有显示任何内容,如上所述,该项目不再反应,但我可以看到我的client_adapter LOG,当我点击Item时,只显示getGroupView方法的条目.
我只是想说,如果我附加ExpandableListView的OnGroupExpand / OnGroupCollapse / OnGroupClick监听器,它也会表现得像这样.
总结:我有一个ListView,如果我单击第一个Item,这个展开以显示一个ExpandableListView,如果我再次点击,这应该是折叠的,但这不会像这样,所以ExpandableListView假设控制整个项目.
任何人都可以告诉我,为什么该项目失去了对点击的控制,这是由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>
解决方法:
存在的问题是因为您在ListView中嵌套了ExpandableListView.当隐藏ExpandableListView时,只有ListView接收onClick事件,但是当它出现时它会消耗所有onClick事件,因此ListView不再响应点击.
您可以按照此主题操作:ListView OnItemClickListener Not Responding?
或者只是在评论之一中使用momo提供的方法 – 仅使用具有更多深度级别的ExpandableListView.
标签:android,android-listview,expandablelistview,onitemclicklistener 来源: https://codeday.me/bug/20190528/1172589.html