【发布时间】:2015-03-24 08:28:38
【问题描述】:
我遇到了一个烦人的问题,ListView 项目的值混在一起!
我有一个带有 TextView(带有适配器视图)和 Onclicklistner ImageView 的简单 ListView,当我单击 ImageView 时,textview 的值会发生变化。
但是当我上下滚动时,值会混合,所以有点烦人。
我一直在寻找解决方案,发现名为“View Holder”的解决方案我也尝试过,但我遇到了同样的问题,这是我的适配器视图代码:
public class adapter extends ArrayAdapter<statisticitem> {
int likes;
public adapter(Context context, ArrayList<statisticitem> questionaires) {
super(context, 0, questionaires);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom, parent, false);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.textView1);
holder.button = (ImageView) convertView.findViewById(R.id.imageView1);
holder.text2 = (TextView) convertView.findViewById(R.id.textView2);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final statisticitem s = getItem(position);
if (s != null) {
holder.text1.setText(s.getIdQuestion());
holder.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
likes++;
holder.text2.setText("yasser");
}
});
}
return convertView;
}
}
和我的视图持有者类:
public class ViewHolder {
TextView text1;
TextView text2;
ImageView button;
}
【问题讨论】:
-
when I scroll up and down, the values get mixed请解释发生了什么 -
比如我点击第一项的ImageView,textview的值发生变化,上下滚动的时候发现其他item的textview也发生了变化
-
ok 试试
ViewGroup rowView=(ViewGroup)v.getParent();((TextView)rowView.findViewById(R.id.textView2)).setText("yasser");而不是holder.text2.setText("yasser"); -
谢谢,但有语法错误
标签: android listview android-listview android-viewholder