Android CheckedTextView与ListView
我有一个列表视图,其中的项目是选中的TextView和复选框。但是,每当我选中一个并滚动listview时,它们就会隐藏,当我通过重新滚动返回到它们时,它们就不再被选中了!我在互联网上读到,当滚动列表视图时,隐藏的项目会在你向后滚动后以某种方式被回收(如果我是正确的,则返回到默认状态)。我还了解到,在自定义适配器中,我必须使用一个名为“setOnCheckedChangeListener”的方法,但CheckedTextView没有该特定方法!!所以我认为我的问题可能是ListView。我怎样才能解决这个问题?多谢各位 更新:这是我的自定义适配器和模型类Android CheckedTextView与ListView,android,listview,checkbox,listviewitem,checkedtextview,Android,Listview,Checkbox,Listviewitem,Checkedtextview,我有一个列表视图,其中的项目是选中的TextView和复选框。但是,每当我选中一个并滚动listview时,它们就会隐藏,当我通过重新滚动返回到它们时,它们就不再被选中了!我在互联网上读到,当滚动列表视图时,隐藏的项目会在你向后滚动后以某种方式被回收(如果我是正确的,则返回到默认状态)。我还了解到,在自定义适配器中,我必须使用一个名为“setOnCheckedChangeListener”的方法,但CheckedTextView没有该特定方法!!所以我认为我的问题可能是ListView。我怎样才
public CustomAdapter(Context c, Model[] resource) {
super(c, R.layout.list_item, resource);
this.context = c;
this.modelItems = resource;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(R.layout.list_item, parent, false);
cb = (CheckedTextView) convertView.findViewById(R.id.checkBox1);
pN = (TextView) convertView.findViewById(R.id.numberId);
pN.setText(modelItems[position].getPhoneNumber());
cb.setText(modelItems[position].getName());
return convertView;
}
这是模型类:
public Model(String name, String phoneNumber, int value) {
this.name = name;
this.value = value;
this.phoneNumber = phoneNumber;
}
public String getName() {
return this.name;
}
public int getValue() {
return this.value;
}
public String getPhoneNumber() {
return this.phoneNumber;
}
您可以使用onCheckedChanged侦听器在适配器中保存复选框的状态。然后,在创建ViewHolder时,使用适配器中的数据设置复选框的选中状态。
希望有帮助 您可以使用onCheckedChanged侦听器在适配器中保存复选框的状态。然后,在创建ViewHolder时,使用适配器中的数据设置复选框的选中状态。
希望有帮助 您需要使用一个对象作为复选框的值,如
public class FormCheck {
private String name;
private boolean isChecked;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isChecked() {
return isChecked;
}
public void setIsChecked(boolean isChecked) {
this.isChecked = isChecked;
}
}
在getView()中,您可以执行以下操作:
checkedTextView.setChecked(itemArray.get(position).getIsChecked);
checkedTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkedTextView.isChecked())
itemArray.get(position).setIsChecked = true;
else
itemArray.get(position).setIsChecked = false;
}
});
您需要使用一个对象作为复选框的值,如
public class FormCheck {
private String name;
private boolean isChecked;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isChecked() {
return isChecked;
}
public void setIsChecked(boolean isChecked) {
this.isChecked = isChecked;
}
}
在getView()中,您可以执行以下操作:
checkedTextView.setChecked(itemArray.get(position).getIsChecked);
checkedTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkedTextView.isChecked())
itemArray.get(position).setIsChecked = true;
else
itemArray.get(position).setIsChecked = false;
}
});
您使用的适配器类型可能重复?是否传递带值的数组?我正在使用自定义适配器,是的,我正在传递带值的数组。请检查下面的答案,您需要将FormCheck对象数组(或您想要的名称)传递给适配器。您使用的适配器类型可能重复?,是否传递带值的数组?我使用的是自定义适配器,是的,我传递的是带值的数组。请检查下面的答案,您需要将FormCheck对象数组(或您想要的名称)传递给适配器。然后您可以实现onClickListener,如果视图被选中或未选中,则可以从中获得。您可以使用“((CheckedTextView)v).isChecked()”我试过了,但遇到了另一个问题。当我实现onClickListener时,我无法获得复选框被单击的位置,因为我必须在参数中声明它为final。如果我声明它是最终的,它将不再改变值。。。因此,基本上我不能选中或取消选中其他CheckedTextView。然后,您可以实现onClickListener,如果视图被选中或未被选中,您可以在那里得到它。您可以使用“((CheckedTextView)v).isChecked()”我试过了,但遇到了另一个问题。当我实现onClickListener时,我无法获得复选框被单击的位置,因为我必须在参数中声明它为final。如果我声明它是最终的,它将不再改变值。。。因此,基本上我无法选中或取消选中其他CheckedTextView。CheckedTextView没有onCheckedChangeListener()方法,只有复选框有该方法!在自定义视图中没有复选框?我的自定义视图只使用一个CheckedTextView。无论如何,你能解释一下为什么你要创建一个类FormCheck,因为我不明白。ListView在滚动时循环视图,以便视图的状态可以更改,在getView上,你必须为视图提供显示的对象所需的状态,使用和对象数组是保存此状态的一种方法。独立于滚动,该图像解释了ver-wellCheckedTextView没有onCheckedChangeListener()方法,只有复选框有该方法!在自定义视图中没有复选框?我的自定义视图只使用一个CheckedTextView。无论如何,你能解释一下为什么你要创建一个类FormCheck,因为我不明白。ListView在滚动时循环视图,以便视图的状态可以更改,在getView上,你必须为视图提供显示的对象所需的状态,使用和对象数组是保存此状态的一种方法。独立于滚动,这张图片解释得很好