我想要,如果我像这样单击此项目,则在我的 ListView
Item
中出现一个新的 View
,其中 (1) 和 ( 2) 是点击次数
我可以做到这一点,但是当我想再次单击此Item
时,即隐藏新的View
,然后Item
单击不再以应有的方式使用react。
我在我的onItemClickListener
中执行add
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
但接下来的点击什么也没有显示,如上所述,Item
不再使用react,但我可以看到我的 client_adapter LOG
以及 的条目当我点击
方法。 Item
时,会显示 getGroupView
我也想指出,如果我附加 ExpandableListView 的 OnGroupExpand/OnGroupCollapse/OnGroupClick Listeners
,它的行为也会像这样。
总结:我有一个 ListView
,如果我单击第一个项目,则该项目会展开以显示 ExpandableListView
,如果我再次单击,则应折叠该项目但这并不是这样的,因此 ExpandableListView
承担对整个 Item 的控制。
谁能告诉我,为什么 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>
最佳答案
存在此问题的原因是您的 ListView
中嵌套了 ExpandableListView
。当 ExpandableListView
隐藏时,只有 ListView
接收 onClick
事件,但当它出现时,它会消耗所有 onClick
事件,因此您的 ListView
不再对点击使用react。
您可以关注此主题:ListView OnItemClickListener Not Responding?
或者只是采用 momo 在评论之一中提供的方法 - 仅使用具有更多深度的 ExpandableListView
。
关于android - 当我向 ListView 项目添加 View 时,该项目不再正确 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276264/