增量/减量自定义ListView适配器

时间:2017-02-14 01:19:03

标签: android listview

我有一个自定义ListView,它显示图像,有两个ImageButtons将用于递增和递减,以显示用户有多少项。
我有两个问题,第一个是单击时一个ListView的增量将显示1,如果我单击新ListView上的增量按钮而不是说1它显示2.我一直在阅读其他堆栈溢出帖子,但并不完全了解如何让它工作,所以我想发布我的代码,看看是否有人可以提供帮助。

我需要它做的是当我点击ListView时让它显示1然后如果我点击另一个ListView我需要那个以1而不是2开始。

第二个问题是ListView循环并显示先前输入的内容,例如,如果在前5个ListViews上单击增量按钮 一旦每个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 个答案:

答案 0 :(得分:1)

public class ListArray extends ArrayAdapter<List> {

    int quantity = 0;

基本上它的作用是每个适配器都有自己的数量。听起来你希望适配器的每一行都有自己的数量。

在这种情况下,我认为最快的解决方案是使用setTag设置listItemView上的数量,当它为空时为0.否则,使用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

要处理滚动,您应该使用&#34; View holder&#34;图案