标签:android-viewholder android listview getview android-checkedtextview
我正在使用viewHolder和getview在listvew中开发checkedtextview.从数据库填充检查/取消选中状态绑定运行良好.但是,如果我检查项目,然后滚动列表视图,它将返回到取消选中状态.
这是我的customAdapter代码.
public class CustomAdapter extends ArrayAdapter<Model> {
private Activity activity;
int id;
String autoid;
ArrayList<Model> items;
DatabaseHelper dbhelper = new DatabaseHelper(getContext());
public CustomAdapter(Activity context, int resource, ArrayList<Model> obj) {
super(context, resource, obj);
this.activity = context;
this.id = resource;
this.items = obj;
try {
dbhelper.openDatabase();
} catch (SQLException e) {
e.printStackTrace();
}
}
static class ViewHolder {
protected CheckedTextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if (convertView == null) {
LayoutInflater inflater = activity.getLayoutInflater();
convertView = inflater.inflate(id, null);
vh = new ViewHolder();
convertView.setTag(vh);
vh.textView = (CheckedTextView) convertView.findViewById(R.id.textbox1);
}
else
{
vh = (ViewHolder) convertView.getTag();
}
final Model item = items.get(position);
String status = item.getStatus();
final Model check = getItem(position);
final ViewHolder finalVh = vh;
vh.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autoid = item.getAutoid();
if (! finalVh.textView.isChecked()) {
finalVh.textView.setChecked(true);
}
else
{
finalVh.textView.setChecked(false);
}
}
});
vh.textView.setText(item.getDate() +". "+item.getInfo());
vh.textView.setChecked(Boolean.parseBoolean(status));
return convertView;
}}
提前致谢.
解决方法:
那是因为您传递的列表(项目)具有旧值.更改检查状态时,将其更新为已填充到列表视图的列表(项目).在滚动时,列表视图将再次将它们加载到项目中正在获得旧的价值.
vh.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autoid = item.getAutoid();
if (! finalVh.textView.isChecked()) {
finalVh.textView.setChecked(true);
item.setStatus("true")
} else {
finalVh.textView.setChecked(false);
item.setStatus("false");
}
items.set(position, item);
}
});
标签:android-viewholder,android,listview,getview,android-checkedtextview 来源: https://codeday.me/bug/20191013/1906598.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。