2016-08-10 42 views
0

我有兩個按鈕增加和減少和一個textview。當我點擊增加按鈕在textview中的值是增加,反之亦然,但是當我滾動列表視圖它的默認值爲0.我該如何解決?當我滾動lisview的textview得到它的默認值0 .how我可以解決這個問題嗎?

public View getView(final int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.cart_item, parent, false); 

      viewHolder = new ViewHolder(); 
      viewHolder.mImgItem = (ImageView) convertView.findViewById(R.id.cart_image); 
      viewHolder.mTvItemName = (TextView) convertView.findViewById(R.id.tv_item_name); 
      viewHolder.mTvItemPrice = (TextView) convertView.findViewById(R.id.tv_item_price); 
      viewHolder.mTvNumber = (TextView) convertView.findViewById(R.id.tv_number); 
      viewHolder.mBtnAdd = (Button) convertView.findViewById(R.id.btn_add); 
      viewHolder.mBtnMinus = (Button) convertView.findViewById(R.id.btn_sub); 
      viewHolder.mImgDelete = (ImageView) convertView.findViewById(R.id.img_del); 
      viewHolder.mUniqueKey = String.valueOf(position); 

     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.mBtnAdd.setTag(viewHolder); 
     viewHolder.mBtnMinus.setTag(viewHolder); 

     viewHolder.mTvNumber.setText("0"); 
     viewHolder.mBtnAdd.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ViewHolder tagHolder = (ViewHolder) v.getTag(); 

       int mValue = Integer.parseInt(tagHolder.mTvNumber.getText().toString().trim()); 
       mValue++; 
       tagHolder.mTvNumber.setText("" + mValue);  
     }); 

     viewHolder.mBtnMinus.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        ViewHolder tagHolder = (ViewHolder) v.getTag(); 
        int mValue = Integer.parseInt(tagHolder.mTvNumber.getText().toString()); 
        if (mValue > 0) { 
         mValue--; 
         tagHolder.mTvNumber.setText("" + mValue); 
        } 

     }); 

     convertView.setTag(viewHolder); 

     PojoCart pojoCart = (PojoCart) getItem(position); 
     viewHolder.mTvItemName.setText(pojoCart.getmItemName()); 
     viewHolder.mTvItemPrice.setText(pojoCart.getmItemPrice()); 

     return convertView; 
    } 
+0

'viewHolder.mTvNumber.setText(「0」);'用最新值替換零,你必須每次從POJO類中獲取最新值 –

回答

1

保存價值PojoCart類保存價值,並從它就像你正在ITEMNAME和ITEMPRICE每次檢索值。因此,創建於PojoCart類和適配器的getView方法的整數數量:當數據變化

+0

我如何保存pojo類中的值。你能描述我嗎? –

+0

檢查我編輯的答案 –

+0

你的代碼textview沒有得到默認值,但值分配多行。 –

0

您必須保存textview的值。 作爲列表視圖重新創建滾動視圖需要默認 就拿模型類和位置

+0

如何保存texview的值。你能告訴我嗎。請 –

0

使用adapter.notifyDataSetChanged()在列表視圖更新值您需要存儲在各列表項的數量,例如使用功能更改列表項的數字的值:

List<Integer> mList = new ArrayList<>(LIST_SIZE); 

int changeNumber(int position, int value){ 
    mList.get(position) += value; 
    return mList.get(position); 
} 

u可以使用此功能,如:

viewHolder.mBtnAdd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ViewHolder tagHolder = (ViewHolder) v.getTag(); 

      int mValue = Integer.parseInt(tagHolder.mTvNumber.getText().toString().trim()); 
      tagHolder.mTvNumber.setText("" + changeNumber(position,1);  
    }); 

    viewHolder.mBtnMinus.setOnClickListener(
     new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ViewHolder tagHolder = (ViewHolder) v.getTag(); 
       int mValue = Integer.parseInt(tagHolder.mTvNumber.getText().toString()); 
       if (mValue > 0) { 
        tagHolder.mTvNumber.setText("" + changeNumber(position,-1); 
       } 

    }); 
+0

我已經在使用它。但問題是,當textview的值是5,我滾動列表視圖。它的默認值爲0. –

+0

檢查這個問題的接受答案http://stackoverflow.com/questions/31934216/keep-textview-content-in-listview-滾動和檢查出這個接受的答案http://stackoverflow.com/questions/18780180 /文本值-被改變的功能於定製-列表視圖-當滾動最列表視圖合雄 – AbhayBohra

0

PojoCart pojoCart = (PojoCart) getItem(position); 
viewHolder.mBtnAdd.setTag(pojoCart); 
viewHolder.mBtnMinus.setTag(pojoCart); 
if(pojoCart.getQuantity() > 0) 
{ 
    viewHolder.mTvNumber.setText(""+pojoCart.getQuantity()); 
} 
else 
{ 
    viewHolder.mTvNumber.setText(""+0); 
} 
viewHolder.mBtnAdd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      PojoCart pojoCart = (PojoCart) v.getTag(); 
      int mValue = pojoCart.getQuantity(); 
      mValue++; 
      tagHolder.mTvNumber.setText("" + mValue); 
      pojoCart.setQuantity(mValue) 
      notifyDataSetChanged(); 
}; 
相關問題