[英]Problems with viewholder in a listview with checkbox
我正在尝试实现带有复选框的列表视图。 侦听器运行良好,我可以看到选择了哪个项目,但是此类中有问题,因为cb.getTag()返回null。
private class MyCustomAdapter extends ArrayAdapter<TemaRescatado> {
private class ViewHolder {
TextView tema;
CheckBox checkTema;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.item_gen, null);
holder = new ViewHolder();
holder.tema = (TextView) convertView.findViewById(R.id.subtema);
holder.checkTema = (CheckBox) convertView.findViewById(R.id.checktema);
convertView.setTag(holder);
holder.checkTema.setOnClickListener( new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v ;
TemaRescatado temaGen = (TemaRescatado) cb.getTag(); //returns null
temaGen.setSelected(cb.isChecked());
}
});
}
else {
holder = (ViewHolder) convertView.getTag();
}
TemaRescatado temaGen = temaList.get(position);
holder.tema.setText(temaGen.getTema());
holder.checkTema.setChecked(temaGen.isSelected());
holder.tema.setTag(temaGen);
return convertView;
}
}
谁能帮我?
您已经为convertView
设置了一个标签,其中包含CheckBox和tema TextView的tema
,但是没有为CheckBox本身设置。 因此,尝试获取该CheckBox的标签正确返回null。
通过查看代码,您真正想要做的就是改变
holder.tema.setTag(temaGen);
至
holder.checkTema.setTag(temaGen);
这将为您的CheckBox提供temaGen
标签,而不是当前正在获取该标签的TextView。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.