我有一个 viewholder
在我的Android应用程序,我想在一个文本框设置增加值。我试图像下面,
活动
@覆盖
公共查看getView(INT位置,查看convertView,ViewGroup中父){
如果(convertView == NULL){
持有人=新的持有人();
LayoutInflater充气=(LayoutInflater)this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.menu_list_item,NULL);
holder.textViewItemName =(TextView中)convertView.findViewById(R.id.textViewItemName);
holder.textViewPrice =(TextView中)convertView.findViewById(R.id.textViewPrice);
holder.imageView =(ImageView的)convertView.findViewById(R.id.imageViewItem);
holder.buttonPlus =(ButtonRectangle)convertView.findViewById(R.id.buttonPlus);
holder.cartQtyTextView =(TextView中)convertView.findViewById(R.id.textViewCartQty);
holder.buttonMinus =(ButtonRectangle)convertView.findViewById(R.id.buttonMinus);
convertView.setTag(保持器);
} 其他 {
支架=(座)convertView.getTag();
}
最终的菜单项的listItem = objects.get(位置);
holder.textViewItemName.setText(listItem.getItemName());
holder.textViewPrice.setText($.concat(将String.valueOf(listItem.getItemPrice())));
//检查和放大器;组
如果(holder.buttonPlus!= NULL){
holder.buttonPlus.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
如果(holder.cartQtyTextView!= NULL){
如果(holder.inc> = 0){
holder.cartQtyTextView.setText(将String.valueOf(holder.inc ++));
}
}
}
});
}
holder.buttonPlus.setBackgroundColor(Color.WHITE);
holder.buttonPlus.setTextColor(Color.parseColor(#333333));
//检查和放大器;组
如果(holder.buttonMinus!= NULL){
holder.buttonMinus.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
如果(holder.inc> = 0){
holder.cartQtyTextView.setText(将String.valueOf(holder.inc--));
}
}
});
}
holder.buttonMinus.setBackgroundColor(Color.WHITE);
holder.buttonMinus.setTextColor(Color.parseColor(#333333));
返回convertView;
}
架
类持有人{
ButtonRectangle buttonPlus;
ButtonRectangle buttonMinus;
TextView的cartQtyTextView;
TextView的textViewItemName;
TextView的textViewPrice;
ImageView的ImageView的;
INT INC;
}
但这递增随机。我如何解决这个问题?
解决方案 >但是,这是递增随机
这是因为viewholder可能属于不同的顺序线。
示例
在开始viewholder#1属于订单行#1 INC = 2 如果您向下滚动列表框订单行#1变为不可见和订单行#27变为可见。 现在,订单行#27重用viewholder#1和INC = 2如何解决这一问题:
您需要存储的数据公司,条款ArticleID,数量,单价,articlename,......
这是objectmodell 最终订单项订单项=(订单项)objects.get(位置);
...
orderItem.inc ++;
另请参见http://stackoverflow.com/search?q=listview+random
I have a viewholder
in my Android app and I tried to set an incremented value on a textfield. I tried it like following,
Activity
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
holder = new Holder();
LayoutInflater inflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.menu_list_item, null);
holder.textViewItemName = (TextView) convertView.findViewById(R.id.textViewItemName);
holder.textViewPrice = (TextView) convertView.findViewById(R.id.textViewPrice);
holder.imageView = (ImageView) convertView.findViewById(R.id.imageViewItem);
holder.buttonPlus = (ButtonRectangle) convertView.findViewById(R.id.buttonPlus);
holder.cartQtyTextView = (TextView) convertView.findViewById(R.id.textViewCartQty);
holder.buttonMinus = (ButtonRectangle) convertView.findViewById(R.id.buttonMinus);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
final MenuItem listItem = objects.get(position);
holder.textViewItemName.setText(listItem.getItemName());
holder.textViewPrice.setText("$ ".concat(String.valueOf(listItem.getItemPrice())));
// Check & Set
if (holder.buttonPlus != null) {
holder.buttonPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.cartQtyTextView != null) {
if (holder.inc >= 0) {
holder.cartQtyTextView.setText(String.valueOf(holder.inc++));
}
}
}
});
}
holder.buttonPlus.setBackgroundColor(Color.WHITE);
holder.buttonPlus.setTextColor(Color.parseColor("#333333"));
// Check & Set
if (holder.buttonMinus != null) {
holder.buttonMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.inc >= 0) {
holder.cartQtyTextView.setText(String.valueOf(holder.inc--));
}
}
});
}
holder.buttonMinus.setBackgroundColor(Color.WHITE);
holder.buttonMinus.setTextColor(Color.parseColor("#333333"));
return convertView;
}
Holder
class Holder {
ButtonRectangle buttonPlus;
ButtonRectangle buttonMinus;
TextView cartQtyTextView;
TextView textViewItemName;
TextView textViewPrice;
ImageView imageView;
int inc;
}
But this is incrementing randomly. How may I fix this?
解决方案 > But this is incrementing randomly
that is because the viewholder may belong to different order-lines.
Example
in the beginning viewholder#1 belongs to orderline #1 with inc=2 if you scroll down the listbox orderline #1 becomes invisible and orderline #27 becomes visible. . now orderline #27 is reusing viewholder#1 and with inc=2how to fix this:
you need an objectmodell that store the data inc, articleid, quantity, unitprice, articlename, ......
final OrderItem orderItem = (OrderItem) objects.get(position);
...
orderItem.inc++;
See also http://stackoverflow.com/search?q=listview+random
上一篇:广场改造客户:如何启用/禁用followRedirects?如何拦截重定向URL?重定向、广场、客户、followRedirects
下一篇:获取java.lang.NoClassDefFoundError的更新到API的23后新到、lang、java、NoClassDefFoundError