在ChildVIew中使用Imagebuttons更改textView值时,可扩展listView,textView对所有childVIew具有相同的值 [英] Expandable listView , textView having same value for all childVIew when using Imagebuttons in ChildVIew to change textView value

查看:46
本文介绍了在ChildVIew中使用Imagebuttons更改textView值时,可扩展listView,textView对所有childVIew具有相同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,希望你们都做得很好。



问题是在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆