Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to put different layouts for child items in ExpandableListView?
    primarykey
    data
    text
    <p>I develop an Android App, so I'm trying to use the <code>ExpandableListView</code> to use two different layouts for each child. But I have a problem and can't seem to fix it. I thought the problem was that I didn't get the right child. Both children display the two layouts at the same time.</p> <p>This my <strong>class Adapter</strong> !</p> <pre><code>public class ExpandListAdapter extends BaseExpandableListAdapter { private Context context; private ArrayList&lt;ExpandListGroup&gt; groups; public ExpandListAdapter(Context context, ArrayList&lt;ExpandListGroup&gt; groups) { this.context = context; this.groups = groups; } public void addItem(ExpandListChild item, ExpandListGroup group) { if (!groups.contains(group)) { groups.add(group); } int index = groups.indexOf(group); ArrayList&lt;ExpandListChild&gt; ch = groups.get(index).getItems(); ch.add(item); groups.get(index).setItems(ch); } public Object getChild(int groupPosition, int childPosition) { //TODO Auto-generated method stub ArrayList&lt;ExpandListChild&gt; chList = groups.get(groupPosition).getItems(); return chList.get(childPosition); } @Override public int getChildTypeCount() { return 2; } public long getChildId(int groupPosition, int childPosition) { //TODO Auto-generated method stub //return childPosition; return (long)( groupPosition*50+childPosition ); } @Override public int getChildType(int groupPosition, int childPosition) { int result = 0; if (childPosition == getChildrenCount(groupPosition)-1) result = 1; return result; } public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent) { TextView textView = null; ExpandListChild child = (ExpandListChild) getChild(groupPosition, childPosition); /* if (view == null) { if(childPosition == 0){ LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); view = infalInflater.inflate(R.layout.expandlist_child_item, null);} else if (childPosition == 1){ LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); view = infalInflater.inflate(R.layout.child2, null); } }*/ if (view == null) { int itemType = getChildType(groupPosition,childPosition); LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); //view = infalInflater.inflate(R.layout.expandlist_child_item, null); if(itemType == 0) { view = infalInflater.inflate(R.layout.expandlist_child_item, null); textView = (TextView) view.findViewById(R.id.tvChild); textView.setText("0"); //textView.setTag(child.getTag()); } else { view = infalInflater.inflate(R.layout.child2, null); textView = (TextView) view.findViewById(R.id.tvChild1); textView.setText("1"); textView.setTag(child.getTag());} /* switch (itemType) { case 0: { view = infalInflater.inflate(R.layout.expandlist_child_item, null); textView = (TextView) view.findViewById(R.id.tvChild); textView.setText("0"); //textView.setTag(child.getTag()); break;} case 1: { view = infalInflater.inflate(R.layout.child2, null); textView = (TextView) view.findViewById(R.id.tvChild1); textView.setText("1"); textView.setTag(child.getTag()); break;} } */ //textView.setPadding(30,20,30,20); } //TODO Auto-generated method stub return view; } public int getChildrenCount(int groupPosition) { //TODO Auto-generated method stub ArrayList&lt;ExpandListChild&gt; chList = groups.get(groupPosition).getItems(); return chList.size(); } public Object getGroup(int groupPosition) { //TODO Auto-generated method stub return groups.get(groupPosition); } public int getGroupCount() { //TODO Auto-generated method stub return groups.size(); } public long getGroupId(int groupPosition) { //TODO Auto-generated method stub return groupPosition; } public View getGroupView(int groupPosition, boolean isLastChild, View view, ViewGroup parent) { ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition); if (view == null) { LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); view = inf.inflate(R.layout.expandlist_group_item, null); } TextView tv = (TextView) view.findViewById(R.id.tvGroup); tv.setText(group.getName()); //TODO Auto-generated method stub return view; } public boolean hasStableIds() { //TODO Auto-generated method stub return true; } public boolean isChildSelectable(int arg0, int arg1) { //TODO Auto-generated method stub return true; } </code></pre> <p>The <strong>child2.xml</strong></p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" &gt; &lt;TextView android:id="@+id/tvChild1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/Black" android:textSize="17sp" &gt; &lt;/TextView&gt; &lt;Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/b1" /&gt; &lt;CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/checkboxh" /&gt; &lt;RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /&gt; &lt;/LinearLayout&gt; </code></pre> <p><strong>expandablelist_child_item.xml</strong></p> <pre><code> &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="55dip" android:background="@color/ExpandChildBackground" android:orientation="vertical" &gt; &lt;TextView android:id="@+id/tvChild" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/Black" android:textSize="17sp" &gt; &lt;/TextView&gt; &lt;Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" /&gt; &lt;Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/b1" /&gt; &lt;/LinearLayout&gt; </code></pre> <p>Below you can see the run of the first and second child.</p> <p><img src="https://i.stack.imgur.com/wL5ti.png" alt=""></p> <p><img src="https://i.stack.imgur.com/NrgoQ.png" alt=""></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload