Android listview和checkedtextview
我有一个带有CheckedTextView的listview。我想在选择项时将其值添加到列表中,在取消选择时从列表中删除该值。我不知道为什么我不能得到准确的值。提前谢谢 这是我的密码Android listview和checkedtextview,android,listview,checkedtextview,Android,Listview,Checkedtextview,我有一个带有CheckedTextView的listview。我想在选择项时将其值添加到列表中,在取消选择时从列表中删除该值。我不知道为什么我不能得到准确的值。提前谢谢 这是我的密码 listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(A
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
CheckedTextView ctv=(CheckedTextView)view.findViewById(R.id.addonsItem);
if (ctv.isChecked()) {
Temp.addonsIdList.add(addonsiDList.get(position));
Temp.addonsNameList.add(addonsList.get(position));
Temp.addonsPriceList.add(addonsPriceList.get(position));
ctv.setChecked(false);
}else{
Temp.addonsIdList.remove(addonsiDList.get(position));
Temp.addonsNameList.remove(addonsList.get(position));
Temp.addonsPriceList.remove(addonsPriceList.get(position));
ctv.setChecked(true);
}
试试这个
您需要首先实现else部分,如下所示
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.addons_text, parent, false);
holder.checkTV=(CheckedTextView)convertView.findViewById(R.id.addonsItem);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.checkTV.setText(Temp.addonsName.get(position));
然后创建类
class ViewHolder {
CheckedTextView checkTV;
}
编辑1:
对于滚动问题,您需要遵循以下步骤
步骤1。
在ArrayList中添加选定的行值
步骤2。
在getView中添加一个条件
if(yourArrayList.contains(selected_value)){
holder.checkTV.setChecked(true);
}else{
holder.checkTV.setChecked(false);
}
试试这个
您需要首先实现else部分,如下所示
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.addons_text, parent, false);
holder.checkTV=(CheckedTextView)convertView.findViewById(R.id.addonsItem);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.checkTV.setText(Temp.addonsName.get(position));
然后创建类
class ViewHolder {
CheckedTextView checkTV;
}
编辑1:
对于滚动问题,您需要遵循以下步骤
步骤1。
在ArrayList中添加选定的行值
步骤2。
在getView中添加一个条件
if(yourArrayList.contains(selected_value)){
holder.checkTV.setChecked(true);
}else{
holder.checkTV.setChecked(false);
}
滚动时您的选择是否更改?是。有时应用程序崩溃。适配器getView代码在哪里?@Amsheer我已附加了我的代码。检查我的答案这将解决你的崩溃。滚动时更改你的选择?是。有时应用程序崩溃。适配器getView代码在哪里?@Amsheer我已经附加了我的代码。检查我的答案这将解决你的问题。crashI也尝试过这个。但问题是我选择了一个项目,但显示了另一个项目。我知道。所以,只需在你的问题中添加评论。你有任何ID字段吗?我不想混淆。告诉我addonsIdList是整数ArrayList吗?不是,是字符串ArrayList最后我解决了它,真冷!!我只是注释掉CheckTextView.setChecked(true)。现在我想要的效果很好。我也试过这个。但问题是我选择了一个项目,但显示了另一个项目。我知道。所以,只需在你的问题中添加评论。你有任何ID字段吗?我不想混淆。告诉我addonsIdList是整数ArrayList吗?不是,是字符串ArrayList最后我解决了它,真冷!!我只是注释掉CheckTextView.setChecked(true)。现在我想要的工作很好。