CheckedTextView 与 ListView
CheckedTextView with ListView
我有一个列表视图,其中的项目是带有复选框的 CheckedTextView。但是,每当我检查一个并滚动列表视图时,它们就会隐藏,当我 return 通过重新滚动回到它们时,它们就不再被检查了!我在互联网上读到列表视图,滚动时,隐藏的项目以某种方式回收(returned 到它们的默认状态,如果我是正确的)在你向后滚动它们之后。我还读到,在自定义适配器中,我必须使用一种名为 "setOnCheckedChangeListener" 的方法,但是 checkedTextViews 没有那个特定的方法!!所以我认为我的问题可能出在列表视图上。我该如何解决这个问题?谢谢。
更新: 所以这是我的自定义适配器和型号 class。
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;
}
这是模型 class:
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 时,使用适配器中的数据设置复选框的选中状态。
希望对您有所帮助!
您需要使用一个对象作为复选框的值,例如
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;
}
});
我有一个列表视图,其中的项目是带有复选框的 CheckedTextView。但是,每当我检查一个并滚动列表视图时,它们就会隐藏,当我 return 通过重新滚动回到它们时,它们就不再被检查了!我在互联网上读到列表视图,滚动时,隐藏的项目以某种方式回收(returned 到它们的默认状态,如果我是正确的)在你向后滚动它们之后。我还读到,在自定义适配器中,我必须使用一种名为 "setOnCheckedChangeListener" 的方法,但是 checkedTextViews 没有那个特定的方法!!所以我认为我的问题可能出在列表视图上。我该如何解决这个问题?谢谢。
更新: 所以这是我的自定义适配器和型号 class。
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;
}
这是模型 class:
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 时,使用适配器中的数据设置复选框的选中状态。 希望对您有所帮助!
您需要使用一个对象作为复选框的值,例如
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;
}
});