我有一个自定义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;
}
}
答案 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;图案