Java 使用viewholder在自定义listview适配器中未正确更新项
我正在使用viewholder处理自定义适配器列表视图。我在这里使用+和-按钮来增加和减少购物车项目。当我增加购物车中的第一个项目时,我在那里显示的文本视图中没有显示正确的增量值,并且没有正确更新增量值。在此我附上代码,请提供一些帮助Java 使用viewholder在自定义listview适配器中未正确更新项,java,android,listview,android-viewholder,Java,Android,Listview,Android Viewholder,我正在使用viewholder处理自定义适配器列表视图。我在这里使用+和-按钮来增加和减少购物车项目。当我增加购物车中的第一个项目时,我在那里显示的文本视图中没有显示正确的增量值,并且没有正确更新增量值。在此我附上代码,请提供一些帮助 public class OrderListAdapter extends BaseAdapter { List<CartDetail> retrieveItems; Context ctx; ViewHolder viewHo
public class OrderListAdapter extends BaseAdapter {
List<CartDetail> retrieveItems;
Context ctx;
ViewHolder viewHolder;
public OrderListAdapter(Context ctx,
ArrayList<CartDetail> rideDetails) {
// TODO Auto-generated constructor stub
this.retrieveItems = rideDetails;
this.ctx = ctx;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return retrieveItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return retrieveItems.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) ctx
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.order_cart_item, null);
}
viewHolder = new ViewHolder();
viewHolder.tvProductName = (TextView) convertView
.findViewById(R.id.tvproductname);
viewHolder.tvNumber.setText(retrieveItems.get(position).getmQuantity());
minteger = Integer.parseInt(retrieveItems.get(position).getmQuantity());
viewHolder.btnDecrease.setTag(convertView);
viewHolder.btnDecrease.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (minteger == 1) {
minteger = minteger - 0;
viewHolder.tvNumber.setText("" + minteger);
} else {
minteger = minteger - 1;
View temp = (View) v.getTag();
strI = String.valueOf(minteger);
String value = retrieveItems.get(position).getmCart();
String productid = retrieveItems.get(position).getmProductId();
String itemTotal = retrieveItems.get(position).getmItemTotal();
String unitPrice = retrieveItems.get(position).getmUnitPrice();
Float intPrice = Float.parseFloat(unitPrice);
finalTotalProductAmount = intPrice * minteger;
TextView tv = (TextView)temp.findViewById(R.id.txtView);
tv.setText(""+minteger);
mTask = new ReduceCartItem(value, productid, itemTotal).execute();
}
}
});
viewHolder.btnIncrease.setTag(convertView);
minteger1=Integer.parseInt(retrieveItems.get(position).getmQuantity());
viewHolder.btnIncrease.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View temp = (View) v.getTag();
minteger1 = minteger1+ 1;
Log.e("integer",""+minteger1);
strI = String.valueOf(minteger1);
String value1 = retrieveItems.get(position).getmCartId();
String productid1 = retrieveItems.get(position).getmProductId();
String itemTotal1 = retrieveItems.get(position).getmItemTotal();
String unitPrice1 = retrieveItems.get(position).getmUnitPrice();
Float intPrice1 = Float.parseFloat(unitPrice1);
finalTotalProductAmount = intPrice1 * minteger1;
TextView tv = (TextView)temp.findViewById(R.id.txtView);
tv.setText(""+minteger1);
Log.e("posiiton", "" + retrieveItems.get(position).getmUnitPrice());
mTask = new UpdateItemTask(value1, productid1, itemTotal1, viewHolder.tvTotalvalue).execute();
}
});
strI = String.valueOf(minteger);
return convertView;
}
public class ViewHolder {
TextView tvProductName, tvProductID, tvUnitPrice, tvDiscount, tvTotal, tvUpdate, tvDelete, tvTotalvalue;
ImageView imageView;
EditText etQuantity;
Button btnIncrease, btnDecrease;
TextView tvNumber;
}
}
公共类OrderListAdapter扩展了BaseAdapter{
列出检索项;
上下文ctx;
持票人持票人;
public OrderListAdapter(上下文ctx,
ArrayList rideDetails){
//TODO自动生成的构造函数存根
this.retrieveItems=rideDetails;
this.ctx=ctx;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回retrieveItems.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回retrieveItems.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共视图getView(最终整型位置,视图转换视图,
视图组(父级){
//TODO自动生成的方法存根
if(convertView==null){
LayoutInflater mInflater=(LayoutInflater)ctx
.getSystemService(活动.布局\充气机\服务);
convertView=mInflater.充气(R.layout.order\u cart\u item,空);
}
viewHolder=新的viewHolder();
viewHolder.tvProductName=(文本视图)convertView
.findViewById(R.id.tvproductname);
viewHolder.tvNumber.setText(retrieveItems.get(position.getmQuantity());
minteger=Integer.parseInt(retrieveItems.get(position.getmQuantity());
viewHolder.btnderence.setTag(convertView);
viewHolder.btnderence.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(minteger==1){
minteger=minteger-0;
viewHolder.tvNumber.setText(“+minteger”);
}否则{
minteger=minteger-1;
视图温度=(视图)v.getTag();
strI=字符串.valueOf(minteger);
String value=retrieveItems.get(position.getmCart();
字符串productid=retrieveItems.get(position.getmProductId();
String itemTotal=retrieveItems.get(position.getmItemTotal();
字符串单价=retrieveItems.get(position.getmUnitPrice();
Float intPrice=Float.parseFloat(单价);
finalTotalProductAmount=intPrice*minteger;
TextView tv=(TextView)temp.findViewById(R.id.txtView);
tv.setText(“+minteger”);
mTask=新的ReducePartItem(值、productid、itemTotal).execute();
}
}
});
viewHolder.btnIncrease.setTag(convertView);
minteger1=Integer.parseInt(retrieveItems.get(position.getmQuantity());
viewHolder.btnIncrease.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
视图温度=(视图)v.getTag();
minteger1=minteger1+1;
Log.e(“整数”和“+minteger1”);
strI=字符串.valueOf(minteger1);
字符串值1=retrieveItems.get(position.getmCartId();
字符串productid1=retrieveItems.get(position.getmProductId();
String itemtottal1=retrieveItems.get(position.getmItemTotal();
字符串unitPrice1=retrieveItems.get(position.getmUnitPrice();
Float intPrice1=Float.parseFloat(unitPrice1);
finalTotalProductAmount=intPrice1*minteger1;
TextView tv=(TextView)temp.findViewById(R.id.txtView);
tv.setText(“+minteger1”);
Log.e(“posiiton”,“+retrieveItems.get(position.getmUnitPrice());
mTask=new UpdateItemTask(值1、productid1、itemTotal1、viewHolder.tvTotalvalue).execute();
}
});
strI=字符串.valueOf(minteger);
返回视图;
}
公共类视图持有者{
text查看tvProductName、tvProductID、tvUnitPrice、TV折扣、tvTotal、tvUpdate、tvDelete、tvTotalvalue;
图像视图图像视图;
编辑文本数量;
按钮BTN增加,BTN减少;
文本视图tvNumber;
}
}
遵循此操作,我尝试过,但问题相同。您可以提供此新UpdateItemTask的代码。我认为您在这里获得的数量是相同的,minteger1=Integer.parseInt(retrieveItems.get(position.getmQuantity());