我有自己的布局ListView和CustomCursorAdapter.每行都有自己的复选框.所以...绝对清楚的是,在滚动期间,复选框会松开它们的状态.我发现的唯一的东西是ListView中的Android保存复选框状态与光标适配器,但没有答案.还有一个问题.我的CustorArrayAdapter遇到了同样的问题.我使用SparseBooleanArray解决了这个问题,以保持复选框状态.它工作正常,但每个滚动调用onCheckedChanged.那是正常的吗?这笔交易是我的列表视图描述报警元素和启动(onCheckedChanged的)定期调用/停止报警.许多无意义的行为.
我有一个带有自定义BaseAdapter的ListView.列表项包含需要表示数据库中的属性的CheckBoxes.
我使用CheckBox.setOnCheckedChangeListener和一个新的OnCheckedChangeListener来检测更改,因此我可以根据CheckBox的当前状态更改数据库.到目前为止非常简单的东西.
但是,当在列表中向下滚动时,先前检查的CheckBox会取消选中.我怀疑只要视图被回收就会发生这种情况(我正在使用convertView/ViewHolder技术).
我怎么能阻止这个?出了什么问题?
提前致谢.
编辑:为了使事情更清楚,问题是回收视图以某种方式使用isChecked == false调用OnCheckedChangeListener#onCheckedChanged(buttonView,isChecked).
我正在尝试创建一个自定义列表,其中包含允许您从列表中选择多个项目的复选框.
带有复选框的列表显示正常但如果我选中一个复选框,然后滚动列表中的其他项目也会被选中.
它与此处的问题基本相同
我知道它与android回收视图的方式有关但我不知道如何解决这个问题!有人能帮帮我吗???
谢谢 - 迈克
我有一个列表视图,每行都有一个复选框,当我选择任何复选框然后滚动屏幕时,每个项目的复选框都会发生变化,我的意思是取消选中它的检查,有时它会保持取消选中,然后当我再次向上滚动时,选中的一个变为取消选中,我发现这个问题Android listview带有复选框问题,用户说这有助于他们,但我无法理解我做了什么sholud,请帮助
这是我的适配器
class RestaurantAdapter extends BaseAdapter {
private static LayoutInflater inflater = null;
private ArrayList<HashMap<String, String>> data;
Activity activity;
public RestaurantAdapter(Activity activity,
ArrayList<HashMap<String, String>> data) {
// TODO Auto-generated constructor stub
this.activity = activity;
this.data = data;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// …Run Code Online (Sandbox Code Playgroud) 大家好日子.
我有一个列表视图,每个textview附近都有复选框.当我勾选一个复选框并向下滚动时,也会检查随机的其他复选框.我在这里读过这篇文章和其他几篇文章,他们都说每个复选框的状态都需要保存在一个布尔列表中 getView().我该怎么做呢?
谢谢.
编辑代码:
这是适配器的代码,也包含getView()方法.
public class MyCustomAdapter extends BaseAdapter
{
public ArrayList<Error> list;
private Context mContext;
private LayoutInflater mInflator;
public MyCustomAdapter(Context context, int textViewResourceId, ArrayList<Error> list)
{
this.list = list;
this.mContext = context;
mInflator = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount()
{
return list.size();
}
@Override
public Error getItem(int position)
{
return list.get(position);
}
@Override
public long getItemId(int position)
{
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) …Run Code Online (Sandbox Code Playgroud)