I have a problem in Expandable listview while scrolling, edittext value changes.I have tried to store values in modal class and set that value while view create.But Edittext values changes while scrolling.Please suggest any solution.Here is my code for expandable listview.Give me some hint or where i make error in this code.
Below is my logs from android studio
11-04 14:31:59.826 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos0 11-04 14:32:04.862 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{a67b858 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos4 11-04 14:32:04.911 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL. ......ID 0,0-514,118 #7f080061 app:id/edtQty} Pos5 11-04 14:32:04.932 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{39f8d9c VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos6 11-04 14:32:05.681 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{d8d264 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos3 11-04 14:32:05.738 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{bd81fa0 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos2 11-04 14:32:05.815 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{39f8d9c VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos1 11-04 14:32:05.879 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos0 11-04 14:32:06.201 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{a67b858 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos4 11-04 14:32:06.235 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{39f8d9c VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos5 11-04 14:32:06.289 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL. ......ID 0,0-514,118 #7f080061 app:id/edtQty} Pos6
The edittext reference duplicates.How to solve?
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.support.design.widget.TextInputEditText;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
import com.codefuelindia.healthcircleordermgmt.R;
import com.codefuelindia.healthcircleordermgmt.model.CatMaster;
import com.codefuelindia.healthcircleordermgmt.model.ProChild;
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private ArrayList<CatMaster> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<CatMaster, ArrayList<ProChild>> _listDataChild;
public ExpandableListAdapter(Context context, ArrayList<CatMaster> listDataHeader,
HashMap<CatMaster, ArrayList<ProChild>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final ProChild childText = (ProChild) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
TextView tvUnitPrice;
final TextInputEditText edtQty;
final TextView tvTotalPrice;
tvUnitPrice = (TextView) convertView.findViewById(R.id.tvUnitPrice);
edtQty = (TextInputEditText) convertView.findViewById(R.id.edtQty);
edtQty.setText();
tvTotalPrice = (TextView) convertView.findViewById(R.id.tvTotalPrice);
txtListChild.setText(childText.getName());
tvUnitPrice.setText(childText.getPrice());
edtQty.setText(childText.getQty());
edtQty.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
f(!TextUtils.isEmpty(charSequence.toString())){
childText.setQty(charSequence.toString());
final double total=Double.parseDouble(childText.getPrice())*Integer.parseInt(charSequence.toString());
tvTotalPrice.setText("Total: ".concat(String.valueOf(total)));
}
else {
tvTotalPrice.setText("");
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
CatMaster headerTitle = (CatMaster) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle.getCatName());
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}