Android, Расширяемое представление списка не реагирует на щелчок !!! Он не расширяется

У меня есть расширяемый список. Я поместил некоторые фиктивные данные, и все выглядит нормально, но когда я запускаю приложение, все группы находятся в режиме слияния, и они не вступают в силу, когда я нажимаю на каждый из них. Это скриншот: Введите описание изображения здесь

XML группы:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/bg_slider" android:orientation="horizontal" > <TextView android:id="@+id/tvRecipeName" style="@style/normal_text.bold" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="50dp" android:layout_marginRight="5dp" android:focusable="false" android:lines="1" android:maxLines="1" android:text="@string/dd_title" /> <ImageButton android:id="@+id/ibDeleteRecipe" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:background="@color/transparent" android:contentDescription="@string/cd" android:focusable="false" android:src="@android:drawable/ic_menu_delete" /> <View android:layout_width="1dp" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/tvRecipeName" android:focusable="false" /> </RelativeLayout> 

XML ребенка:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/White" android:gravity="left|center_vertical" > <View android:layout_width="1dp" android:layout_height="35dp" android:layout_toLeftOf="@+id/tvIngredient" android:focusable="false" /> <TextView android:id="@+id/tvIngredient" style="@style/normal_text_black" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="30dp" android:layout_marginRight="5dp" android:lines="1" android:maxLines="1" android:text="@string/dd_title" android:focusable="false" /> <ImageButton android:id="@+id/ibDeleteIngredient" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:background="@color/transparent" android:contentDescription="@string/cd" android:focusable="false" android:src="@android:drawable/btn_dialog" /> </RelativeLayout> 1 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/White" android:gravity="left|center_vertical" > <View android:layout_width="1dp" android:layout_height="35dp" android:layout_toLeftOf="@+id/tvIngredient" android:focusable="false" /> <TextView android:id="@+id/tvIngredient" style="@style/normal_text_black" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="30dp" android:layout_marginRight="5dp" android:lines="1" android:maxLines="1" android:text="@string/dd_title" android:focusable="false" /> <ImageButton android:id="@+id/ibDeleteIngredient" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="15dp" android:background="@color/transparent" android:contentDescription="@string/cd" android:focusable="false" android:src="@android:drawable/btn_dialog" /> </RelativeLayout> 

И в main.xml определение расширяемого списка:

 <ExpandableListView android:id="@+id/elv" android:layout_width="match_parent" android:layout_height="match_parent" /> 

У меня есть адаптер, который я написал для этого кода:

 public class ExpAdapter extends BaseExpandableListAdapter { private final String TAG = "ExpAdapter"; private Context context; static final String arrGroupelements[] = {"India", "Australia", "England", "South Africa"}; static final String arrChildelements[][] = { {"Sachin Tendulkar", "Raina", "Dhoni", "Yuvi" }, {"Ponting", "Adam Gilchrist", "Michael Clarke"}, {"Andrew Strauss", "kevin Peterson", "Nasser Hussain"}, {"Graeme Smith", "AB de villiers", "Jacques Kallis"} }; public ExpAdapter(Context context) { this.context = context; Log.i(TAG, "Adapter created."); } @Override public Object getChild(int groupPosition, int childPosition) { return null; } @Override public long getChildId(int groupPosition, int childPosition) { return 0; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.elv_child, null); } TextView tvItem = (TextView) convertView.findViewById(R.id.tvIngredient); ImageButton ibDelete = (ImageButton) convertView.findViewById(R.id.ibDeleteIngredient); ibDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i(TAG, "******"); } }); tvItem.setText(arrChildelements[groupPosition][childPosition]); return convertView; } @Override public int getChildrenCount(int groupPosition) { return arrChildelements[groupPosition].length; } @Override public Object getGroup(int groupPosition) { return null; } @Override public int getGroupCount() { return arrGroupelements.length; } @Override public long getGroupId(int groupPosition) { return 0; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.elv_group, null); } TextView tvItem = (TextView) convertView.findViewById(R.id.tvRecipeName); ImageButton ibDeleteRcipe = (ImageButton) convertView.findViewById(R.id.ibDeleteRecipe); ibDeleteRcipe.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i(TAG, "%%%%%%"); } }); tvItem.setText(arrGroupelements[groupPosition]); return convertView; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } } 

И, наконец, в коде фрагмента активности у меня есть:

 public class ShoppingList extends FragmentActivity { ExpAdapter adapter = new ExpAdapter(this); //Linking expnadable list view expListView = (ExpandableListView) findViewById(R.id.elv); expListView.setAdapter(adapter); expListView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { Log.i(TAG, "Group " + groupPosition + " expanded."); } }); expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { @Override public void onGroupCollapse(int groupPosition) { Log.i(TAG, "Group " + groupPosition + " collapsed."); } }); expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Log.i(TAG, "item " + childPosition + " of group " + groupPosition + " clicked."); return false; } }); } 

Когда я запускаю приложение и щелкаю om родителей, ничего не происходит. Я попытался добавить следующие строки кода в конце торгового класса:

 int count = adapter.getGroupCount(); for (int position = 1; position <= count; position++) expListView.expandGroup(position - 1); 

Теперь, когда я запускаю результат приложения, как этот снимок экрана: Введите описание изображения здесь

Если я нажимаю кнопки удаления (родительский или дочерний), я вижу, что они вступают в силу (как я проверяю logcat), однако, когда я нажимаю на ребенка или родителя, ничего не происходит. Итак, я понятия не имею, почему обратные вызовы не работают. Основываясь на моих исследованиях, я обнаружил, что мне нужно установить Focussable of image buttons в false . Как вы можете видеть в файлах XML, я сделал это, но все же, когда я нажимаю на родительскую и дочернюю строки, я не вижу никакого ответа.

Поскольку я провел более 6-7 часов, чтобы найти решение и не был успешным, я искренне благодарен за ваши комментарии и предложения. благодаря

Solutions Collecting From Web of "Android, Расширяемое представление списка не реагирует на щелчок !!! Он не расширяется"

Наконец я нашел решение 🙂

Я понятия не имею, что это ошибка или болезнь или …

Как уже упоминалось выше, на основе моих исследований я обнаружил, что нам нужно установить фокус-способность изображения / окна изображения на «ложь». Я сделал это в файле XML, и это не сработало. Я задал фокус-способность «true» в XML, а в коде – false. как это:

 @Override public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.elv_group, null); } TextView tvItem = (TextView) convertView.findViewById(R.id.tvRecipeName); ImageButton ibDeleteRcipe = (ImageButton) convertView.findViewById(R.id.ibDeleteRecipe); ibDeleteRcipe.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ... } }); ibDeleteRcipe.setFocusable(false); tvItem.setText(arrGroupElements[groupPosition]); return convertView; } 

Поэтому, основываясь на моих достижениях! Он должен быть установлен в «false» в коде, а не в XML! Теперь вопрос в чем разница? -Понятия не имею.

Необходимо определить android:focusable="false" в макете xml для фокусируемых представлений в раскрывающемся элементе просмотра списка, но не в атрибуте " ExpandableListView ".

Например: если элемент настраиваемого родительского списка включает флажок (он автоматически получит фокус), он должен выглядеть следующим образом.

 <CheckBox android:id="@+id/cbkSelectDownload" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="false"/>