在ChildVIew中使用Imagebuttons更改textView值时,可扩展listView,textView对所有childVIew具有相同的值 [英] Expandable listView , textView having same value for all childVIew when using Imagebuttons in ChildVIew to change textView value
问题描述
大家好,希望你们都做得很好。
问题是在Expandable ListView中,我在childVIew中使用两个imgButton来添加项目并减去它们,但是当我点击一个childView的按钮时,它会改变它的值,但它也会保存其它childView的值。
请看这个图片
如果我添加两个Veggie Burger然后我点击芝士汉堡它会告诉我'3'而不是'1',它是从前一个子Text值中减去的。请帮助我。
我的适配器类代码
Hi all , hope you all are doing well.
Problem is that in Expandable ListView , i am using two imgButtons in childVIew for adding item and subtracting them , but when i click on one childView's buttons it changes its value but it saves its value for other childViews as well.
Please look this for picture
If i add two Veggie Burger then i click Cheese burger it will show me '3' instead of '1' it is adding subtracting from previous child Text value. Kindly help me.
My Adapter Class Code
public class ExpandableListAdapter extends BaseExpandableListAdapter {
class ViewHolder {
protected TextView txtPizzaName,txtPizzaCount,txtPizzaPrice;
ImageButton btnMinus, btnPlus;
}
private Context _context;
private List _listDataHeader;
int ItemCounter=0,PriceCounter=0;
private HashMap _listDataChild;
public ExpandableListAdapter(Context context, List listDataHeader, HashMap 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 String childText = (String) getChild(groupPosition, childPosition);
View v = null;
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = infalInflater.inflate(R.layout.list_item_child, parent, false);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.txtPizzaName = (TextView) v.findViewById(R.id.txtViewPizzaNameID);
viewHolder.btnMinus = (ImageButton) v.findViewById(R.id.imgBtnMinusID);
viewHolder.btnPlus = (ImageButton) v.findViewById(R.id.imgBtnPlusID);
viewHolder.txtPizzaPrice = (TextView) v.findViewById(R.id.txtViewPizzaPriceID);
viewHolder.txtPizzaCount = (TextView) v.findViewById(R.id.txtViewPizzaCountID);
viewHolder.btnMinus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ItemCounter--;
PriceCounter = PriceCounter-3;
viewHolder.txtPizzaCount.setText(""+ItemCounter);
viewHolder.txtPizzaPrice.setText("$"+PriceCounter+".00");
}
});
viewHolder.btnPlus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ItemCounter++;
PriceCounter = PriceCounter+3;
//i think prob is here
viewHolder.txtPizzaCount.setText(""+ItemCounter);
viewHolder.txtPizzaPrice.setText("$"+PriceCounter+".00");
}
});
v.setTag(viewHolder);
ViewHolder holder = (ViewHolder) v.getTag();
holder.txtPizzaName.setText(childText);
return v;
}
@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 void onGroupCollapsed(int groupPosition) {
super.onGroupCollapsed(groupPosition);
}
@Override
public void onGroupExpanded(int groupPosition) {
super.onGroupExpanded(groupPosition);
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
推荐答案
+ PriceCounter +。00);
}
});
viewHolder.btnPlus.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
ItemCounter ++;
PriceCounter = PriceCounter + 3;
//我认为prob在这里
viewHolder.txtPizzaCount.setText(+ ItemCounter);
viewHolder.txtPizzaPrice.setText(
"+PriceCounter+".00"); } }); viewHolder.btnPlus.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ItemCounter++; PriceCounter = PriceCounter+3; //i think prob is here viewHolder.txtPizzaCount.setText(""+ItemCounter); viewHolder.txtPizzaPrice.setText("
+ PriceCounter +。00);
}
});
v.setTag(viewHolder);
ViewHolder holder =(ViewHolder)v.getTag();
holder.txtPizzaName.setText(childText);
return v;
}
@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 void onGroupCollapsed(int groupPosition){
super.onGroupCollapsed(groupPosition);
}
@Override
public void onGroupExpanded(int groupPosition){
super.onGroupExpanded(groupPosition);
}
@Override
public boolean hasStableIds(){
return false;
}
@Override
public boolean isChildSelectable(int groupPosition,int childPosition){
return true;
}
}
"+PriceCounter+".00"); } }); v.setTag(viewHolder); ViewHolder holder = (ViewHolder) v.getTag(); holder.txtPizzaName.setText(childText); return v; } @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 void onGroupCollapsed(int groupPosition) { super.onGroupCollapsed(groupPosition); } @Override public void onGroupExpanded(int groupPosition) { super.onGroupExpanded(groupPosition); } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } }
这篇关于在ChildVIew中使用Imagebuttons更改textView值时,可扩展listView,textView对所有childVIew具有相同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!