我使用带有复选框的自定义列表视图。滚动列表视图时,选中状态会互换如何控制互换并将其设置为默认值,即我选择的选中项目
代码供你参考
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null)
{
convertView=lInflater.inflate(R.layout.subtag, null);
holder=new viewHolder();
holder.check=(CheckBox)convertView.findViewById(R.id.subtag_checkCatagory);
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked)
{
System.out.println("checked item:"+buttonView.getText());
temp.add(buttonView.getText().toString());
}
else
{
temp.remove(buttonView.getText().toString());
}
}
});
convertView.setTag(holder);
}
else
{
holder = (viewHolder) convertView.getTag();
}
holder.check.setText(list.get(position));
return convertView;
}
最后我找到了上述问题的答案。在此代码中检查值和TextView
当我们滚动时,值不会改变ListView
Steps
- 代替
BaseAdapter
use ArrayAdapter
for 自定义列表视图
- 为复选框选中/取消选中和文本视图获取/设置编写一个 bojo 类
- 专注于
getview()
正如我下面所规定的
Code
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.subtag, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.subtag_textCatagory);
viewHolder.check = (CheckBox) view.findViewById(R.id.subtag_checkCatagory);
viewHolder.text.setOnClickListener(this);
viewHolder.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
TagBojo element = (TagBojo) viewHolder.check.getTag();
element.setSelected(buttonView.isChecked());
System.out.println(element.getListName());
});
view.setTag(viewHolder);
viewHolder.check.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).check.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getListName());
holder.check.setChecked(list.get(position).getSelected());
return view;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)