我有一个列表视图,大约有200个项目,我为复选框实现了一个自定义ArrayAdapter。我使用SparseBooleanArray来存储盒子的值。
所有这些工作正常,但我似乎无法以图形方式更新复选框的检查。如果用户单击,则选中该框。但是,如果我在代码中调用setChecked,则它对框本身没有影响(因此,即使其值为true,也不会对其进行打勾)。
我通过尝试将所有框都设置为true并没有运气进行了测试,即使它们都已选中,也不能表明它们是正确的。不知道您需要查看什么代码,但是为了更好的实现,我已经插入了Adapter:
class CheckBoxArrayAdapter extends ArrayAdapter<String> implements CompoundButton.OnCheckedChangeListener {
private SparseBooleanArray checkedBoxes;
Context context;
public CheckBoxArrayAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
checkedBoxes = new SparseBooleanArray();
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final CheckBox view = (CheckBox) super.getView(position, convertView, parent);
//if(convertView == null) {
//convertView = view.inflate(context, R.layout.html" target="_blank">list_item, null);
//}
view.setTag(position);
view.setChecked(checkedBoxes.get(position, false));
System.out.println(view.getTag() + ": " + view.isChecked());
view.setOnCheckedChangeListener(this);
return view;
}
public boolean isChecked(int position) {
return checkedBoxes.get(position, false);
}
public void setChecked(int position, boolean isChecked) {
checkedBoxes.put(position, isChecked);
notifyDataSetChanged();
}
public void toggle(int position) {
setChecked(position, !isChecked(position));
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkedBoxes.put((Integer) buttonView.getTag(), buttonView.isChecked());
}
}
多谢你们!
好的,似乎Checked Text View是最好的方法,将它们用作列表项,并将其用作您的侦听器:
public void onItemClick(AdapterView<?> parent, View view, int pos,long id)
{
if(!isChecked.get(pos)) {
messageList.setItemChecked(pos, true);
isChecked.put(pos, true);
}else{
messageList.setItemChecked(pos, false);
isChecked.put(pos, false);
}
//sendEmail("encima+Gmail4wrdr@gmail.com", address.get(pos) + ": " + subject.get(pos), Jsoup.parse(message.get(pos)).toString());
}
我之前使用的示例是由Google Android开发人员提供的,这就是为什么我认为它很普通。但是,不管是不是,这种方法都 更加 简单!
如果我打开活动,复选框始终保持选中状态,即使我取消选中它并离开活动或关闭应用程序,在重新启动活动后,它也将保持选中状态。 我已尝试使用以下代码段保存活动的状态。 复选框应始终处于用户离开它的状态(选中或未选中)。
我们使用的是Vaadin 8,我们有一个多选网格。在标题中有一个复选框,用作全选/取消全选复选框。问题是,窗口关闭后,标题复选框不会保持选中状态。E、 g.如果窗口打开,则选中标题复选框-
问题内容: 我的ListView自定义适配器(及其新实现的viewHolder)存在一些问题。我有一个ListView,每个项目都有一个复选框(这里没有新内容)。问题是,如果列表中有9个以上的项目,则当我选中第一个复选框时,将自动检查第10个复选框(第二个和第11个复选框相同),就像两个项目都有一个监听器一样(我相信情况确实如此)。 我在这里阅读了有关listView的位置问题,视图回收以及Vie
我有一个学生列表视图,每个行项目上都有一个开关和复选框以供学生出勤。我想保留滚动期间的开关框和复选框更改。我尝试了这种方法,但没有成功: 出勤率创建新.cs具有以下代码部分 谢谢。
我有一个简单的搜索列表视图与复选框,但它不能记住我的选择,当它得到过滤。 主要活动。xml 主要活动。JAVA 正如你在下面的图片中看到的,它不记得搜索后错误选择的“Petr”和“Ivan”。。。
我有一个带有复选框的列表,我在中应用了相同的行为 我的问题是,如果我先选中活动中的复选框,然后通过(模拟从服务器下载新数据)删除第一项,然后再次渲染,则选中第二个活动中的复选框。 当它不附加到实例时,的目的是什么。渲染工作正常,因为在控制台中打印的,所以被从第一运动移动到第二运动。