2017-02-14 151 views
0

我有一個自定義的ListView它顯示圖像,並且有兩個ImageButtons將用於遞增和遞減以顯示用戶有多少項目。
我有兩個問題,第一個是一個ListView單擊時的增量將顯示1,如果我單擊一個新的ListView上的增量按鈕,而不是說它顯示2.我一直在閱讀其他堆棧溢出帖子,但didn'不知道如何讓它工作,所以我想發佈我的代碼,看看有沒有人可以幫忙。Increment/Decrement自定義ListView適配器

我需要做的就是把它顯示1當我點擊一個ListView,然後,如果我點擊其他的ListView我需要一個以代替1 2

第二個問題是啓動ListView循環並顯示以前輸入的內容,例如,如果在前5個ListView上,我單擊增量按鈕 ,每次ListView將顯示1,2,3,4,5,然後如果我向下滾動到第6個ListView,將顯示1第七將顯示2等

我是新編程和任何幫助將非常感激。
如果需要編寫的其他代碼,請告訴我。

package net.programmingparadise.duelysttracker; 

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by josel on 1/20/2017. 
*/ 

public class ListArray extends ArrayAdapter<List> { 

    int quantity = 0; 

    public ListArray(Context context, ArrayList<List> list) { 
     super(context, 0, list); 
    } 

    @NonNull 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View listItemView = convertView; 
     if (listItemView == null) { 
      listItemView = LayoutInflater.from(getContext()).inflate(
        R.layout.list_item, parent, false); 
     } 
     final List local_list = getItem(position); 

     ImageView cardImageView = (ImageView) listItemView.findViewById(R.id.cardImageView); 
     cardImageView.setImageResource(local_list.getmCardImage()); 
     ImageView spiritImageView = (ImageView) listItemView.findViewById(R.id.spiritImageView); 
     spiritImageView.setImageResource(local_list.getmSpiritImage()); 
     ImageView setImageView = (ImageView) listItemView.findViewById(R.id.setImageView); 
     setImageView.setImageResource(local_list.getmSetImage()); 
     final TextView quantityTextView = (TextView) listItemView.findViewById(R.id.itemCount); 

     ImageButton incrementButton = (ImageButton) listItemView.findViewById(R.id.increment); 


     incrementButton.setTag(local_list); 

     incrementButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       quantity++; 
       quantityTextView.setText(String.valueOf(quantity)); 


      } 
     }); 
     return listItemView; 


    } 
} 

回答

1
public class ListArray extends ArrayAdapter<List> { 

    int quantity = 0; 

從本質上講這是什麼一樣的是,每個適配器都有自己的數量。聽起來你想讓適配器的每一行都有自己的數量。

在這種情況下,我認爲最快的解決方案是使用setTaglistItemView上的數量設置爲零,否則使用getTag來獲取該行的數量。

public View getView(final int position, View convertView, ViewGroup parent) { 
    View listItemView = convertView; 
    if (listItemView == null) { 
     listItemView = LayoutInflater.from(getContext()).inflate(
       R.layout.list_item, parent, false); 
     listItemView.setTag(0); 
    } 
    final Integer quantity = (Integer) listItemView.getTag(); 
    // setTag again in onClick to quantity + 1 

要處理滾動,你應該使用「查看持有人」模式

+0

對不起所有的問題,但是當我把在「最後的整數數量= listItemView.getTag();」它指出類型是不兼容的,它說一個是整數,另一個是對象,我該如何糾正這種情況,是否有我可以讀取的內容來清除它 – PrimordialRage

+0

您可以使用IDE爲您解決它。一個是對象,另一個是整數。你會想查找「鑄造」。不過,我不確定這是否是您正在尋找的解決方案 –