Я хочу, чтобы в моем ListView
Item
появился новый View
, если я нажму на этот элемент вот так, где (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
запись «TAG» со значениями
onItemClick:: BEGIN
onItemClick:: before addTitle
onItemClick:: after addTitle
onItemClick:: BEGIN
но следующие щелчки ничего не показывают, и, как сказано, этот Item
больше не реагирует, но вместо этого я вижу свой client_adapter LOG
, и когда я нажимаю Item
, отображаются только записи метода getGroupView
.
Я просто хотел отметить, что он также ведет себя так, если я присоединяю OnGroupExpand/OnGroupCollapse/OnGroupClick Listeners
к ExpandableListView.
Подводя итог: у меня есть ListView
, и если я щелкну первый элемент, этот развернется, чтобы показать ExpandableListView
, и если я щелкну еще раз, он должен быть свернут, но это не ведет себя так, так что 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>