Note that there are some explanatory texts on larger screens.

plurals
  1. PO(ExpandableListView),When I click button,update ImageView
    text
    copied!<p>when click button in child view then update imageview in group. The problem is when I click the button, if all the checkbox selected,the imageview show the last one, not all checkbox selected, the imageview show the second one else show the first one!</p> <p><img src="https://i.stack.imgur.com/qRQ9s.jpg" alt="MyImage"></p> <p>The question is when I click the button,the image view cannot update in the correct position!</p> <pre><code>package cn.nedu.exlistview; import java.util.ArrayList; import java.util.List; import java.util.Map; import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; class AccountExpandablebaseadapter extends BaseExpandableListAdapter { private Resources mResource; private Context context; List&lt;String&gt; accountFather = new ArrayList&lt;String&gt;(); List&lt;List&lt;Map&lt;String, String&gt;&gt;&gt; accountChild = new ArrayList&lt;List&lt;Map&lt;String, String&gt;&gt;&gt;(); List&lt;View&gt; cachedGroupView = new ArrayList&lt;View&gt;(); public AccountExpandablebaseadapter(Context context, List&lt;String&gt; accountFathers, List&lt;List&lt;Map&lt;String, String&gt;&gt;&gt; accountChilds,Resources mResouce) { this.accountFather = accountFathers; this.accountChild = accountChilds; this.mResource = mResouce; this.context = context; } public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder viewHolder = null; View view = convertView; if (view == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.member_listview, null); viewHolder = new GroupViewHolder(); viewHolder.groupTitle = (TextView) view.findViewById(R.id.txtFather); /*customize indicator view*/ viewHolder.groupStatus = (ImageView) view.findViewById(R.id.status); //RelativeLayout tabLayout = (RelativeLayout)view.findViewById(); //mResource.getDrawable(R.drawable.indicator_close); view.setTag(viewHolder); }else{ viewHolder = (GroupViewHolder) view.getTag(); } cachedGroupView.add(view); //cached group view viewHolder.groupTitle.setText(getGroup(groupPosition).toString()); Drawable indicator_close = mResource.getDrawable(R.drawable.indicator_close); indicator_close.setBounds(0, 0, indicator_close.getMinimumWidth(), indicator_close.getMinimumHeight()); Drawable indicator_open = mResource.getDrawable(R.drawable.indicator_open); indicator_open.setBounds(0, 0, indicator_open.getMinimumWidth(), indicator_open.getMinimumHeight()); if (isExpanded) { //imageIndicator.setImageResource(R.drawable.indicator_close); viewHolder.groupTitle.setCompoundDrawables(indicator_close, null, null, null); viewHolder.groupTitle.setBackgroundColor(R.color.text_color_normal); viewHolder.groupTitle.setTextColor(mResource.getColor(R.color.text_color_click)); }else{ //imageIndicator.setImageResource(R.drawable.indicator_open); viewHolder.groupTitle.setCompoundDrawables(indicator_open, null, null, null); viewHolder.groupTitle.setBackgroundColor(Color.TRANSPARENT); viewHolder.groupTitle.setTextColor(mResource.getColor(R.color.text_color_normal)); } return view; } public long getGroupId(int groupPosition) { return groupPosition; } public Object getGroup(int groupPosition) { return accountFather.get(groupPosition).toString(); } public int getGroupCount() { return accountFather.size(); } public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View view = convertView; ChildViewHolder viewHolder = null; if (view == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.member_childitem2, null); viewHolder = new ChildViewHolder(); viewHolder.checkBox1 = (CheckBox)view.findViewById(R.id.checkbox1); viewHolder.checkBox2 = (CheckBox)view.findViewById(R.id.checkbox2); viewHolder.checkBox3 = (CheckBox)view.findViewById(R.id.checkbox3); viewHolder.checkBox4 = (CheckBox)view.findViewById(R.id.checkbox4); viewHolder.checkBox5 = (CheckBox)view.findViewById(R.id.checkbox5); viewHolder.checkBox6 = (CheckBox)view.findViewById(R.id.checkbox6); view.setTag(viewHolder); }else{ viewHolder = (ChildViewHolder) view.getTag(); } Button btn_submit = (Button)view.findViewById(R.id.btn_submit); View groupView = cachedGroupView.get(childPosition); final GroupViewHolder groupViewHolder = (GroupViewHolder) groupView.getTag(); btn_submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(context, groupPosition+ ":" + childPosition, Toast.LENGTH_SHORT).show(); groupViewHolder.groupStatus.setImageResource(R.drawable.indicator_close); } }); return view; } public long getChildId(int groupPosition, int childPosition) { return childPosition; } public Object getChild(int groupPosition, int childPosition) { return accountChild.get(groupPosition).get(childPosition) .get(ExListView.FATHERACCOUNT).toString(); } public int getChildrenCount(int groupPosition) { return accountChild.get(groupPosition).size(); } public boolean hasStableIds() { return true; } public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class GroupViewHolder{ TextView groupTitle; ImageView groupStatus; } class ChildViewHolder{ CheckBox checkBox1; CheckBox checkBox2; CheckBox checkBox3; CheckBox checkBox4; CheckBox checkBox5; CheckBox checkBox6; } } package cn.nedu.exlistview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.os.Bundle; import android.os.StrictMode; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.View.OnClickListener; import android.widget.AbsListView; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupExpandListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import android.widget.ExpandableListView.OnChildClickListener; public class ExListView extends Activity { final static String FATHERACCOUNT = "fatherAccount"; final static String CHILDACCOUNT = "childAccount"; final static String BALANCEACCOUNT = "accountBalance"; private int currentHourPosition = -1; List&lt;String&gt; accountFather = new ArrayList&lt;String&gt;(); List&lt;List&lt;Map&lt;String, String&gt;&gt;&gt; accountChild = new ArrayList&lt;List&lt;Map&lt;String, String&gt;&gt;&gt;(); AccountExpandablebaseadapter adapter; ExpandableListView listAccount; private Resources mResouce; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // StriceMode StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectAll().penaltyLog().penaltyDialog().build()); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); mResouce = getResources(); listAccount = (ExpandableListView) findViewById(R.id.listAccount); accountFather.add("GroupName1"); accountFather.add("GroupName2"); accountFather.add("GroupName3"); List&lt;Map&lt;String, String&gt;&gt; financeAccount = new ArrayList&lt;Map&lt;String, String&gt;&gt;(); Map&lt;String, String&gt; child1Data1 = new HashMap&lt;String, String&gt;(); child1Data1.put(FATHERACCOUNT, "wwwwww)"); child1Data1.put(CHILDACCOUNT, "wwwwww"); child1Data1.put(BALANCEACCOUNT, "¥0.00"); financeAccount.add(child1Data1); List&lt;Map&lt;String, String&gt;&gt; dummyAccount = new ArrayList&lt;Map&lt;String, String&gt;&gt;(); Map&lt;String, String&gt; child2Data1 = new HashMap&lt;String, String&gt;(); child2Data1.put(FATHERACCOUNT, "zzzzz"); child2Data1.put(CHILDACCOUNT, "zzzzzz"); child2Data1.put(BALANCEACCOUNT, "¥0.00"); dummyAccount.add(child2Data1); List&lt;Map&lt;String, String&gt;&gt; cashAccount = new ArrayList&lt;Map&lt;String, String&gt;&gt;(); Map&lt;String, String&gt; child3Data1 = new HashMap&lt;String, String&gt;(); child3Data1.put(FATHERACCOUNT, "xxxxxx"); child3Data1.put(CHILDACCOUNT, "eeeeeee"); child3Data1.put(BALANCEACCOUNT, "¥0.00"); cashAccount.add(child3Data1); List&lt;Map&lt;String, String&gt;&gt; creditorAccount = new ArrayList&lt;Map&lt;String, String&gt;&gt;(); Map&lt;String, String&gt; child4Data1 = new HashMap&lt;String, String&gt;(); List&lt;Map&lt;String, String&gt;&gt; owesAccount = new ArrayList&lt;Map&lt;String, String&gt;&gt;(); Map&lt;String, String&gt; child5Data1 = new HashMap&lt;String, String&gt;(); accountChild.add(financeAccount); accountChild.add(dummyAccount); accountChild.add(cashAccount); adapter = new AccountExpandablebaseadapter(ExListView.this, accountFather, accountChild, mResouce); listAccount.setAdapter(adapter); listAccount.setGroupIndicator(null); listAccount.setDivider(null); listAccount.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { /* * Toast.makeText( getBaseContext(), * String.valueOf(groupPosition) + ":" + * String.valueOf(childPosition), Toast.LENGTH_SHORT).show(); */ return false; } }); // listAccount.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return false; } }); listAccount.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { if (currentHourPosition != -1 &amp;&amp; currentHourPosition != groupPosition) { listAccount.collapseGroup(currentHourPosition); } currentHourPosition = groupPosition; listAccount.setSelectedGroup(groupPosition); } }); } } &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#003300"&gt; &lt;ExpandableListView android:id="@+id/listAccount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:groupIndicator="@null" android:scrollbars="none" /&gt; &lt;/LinearLayout&gt; &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" &gt; &lt;RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:id="@+id/tabLayout"&gt; &lt;ImageView android:id="@+id/indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:visibility="gone" /&gt; &lt;TextView android:id="@+id/txtFather" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="6dp" android:layout_toRightOf="@id/indicator" android:textColor="#000000" android:textSize="16dp" /&gt; &lt;/RelativeLayout&gt; &lt;ImageView android:id="@+id/status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:contentDescription="@string/app_name" android:src="@drawable/icon" /&gt; &lt;/RelativeLayout&gt; &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffff" android:orientation="vertical" &gt; &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkbox1" android:text="Checkbox1" android:button="@drawable/checkbox_bg" android:textColor="#000000" /&gt; &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkbox2" android:text="Checkbox2" android:button="@drawable/checkbox_bg" android:textColor="#000000" /&gt; &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkbox3" android:text="Checkbox3" android:textColor="#000000" android:button="@drawable/checkbox_bg" /&gt; &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:id="@+id/checkbox4" android:text="Checkbox4" android:button="@drawable/checkbox_bg" /&gt; &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:id="@+id/checkbox5" android:text="Checkbox5" android:button="@drawable/checkbox_bg" /&gt; &lt;CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:id="@+id/checkbox6" android:text="Checkbox6" android:button="@drawable/checkbox_bg" /&gt; &lt;LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation="horizontal" &gt; &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Take Picture" /&gt; &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Submit" android:id="@+id/btn_submit" /&gt; &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Cancel" android:id="@+id/btn_cancel" /&gt; &lt;/LinearLayout&gt; &lt;/LinearLayout&gt; </code></pre>
 

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