我有一个将自定义 ArrayAdapter 作为 ListAdapter 的视图。客户是 Poco:
public class Customer {
public String LastName;
public boolean IsActive;
}
什么有效:我已经成功地将我的 ArrayList 绑定到我的 ListView,LastName 显示为文本并且 CheckBox 是否被选中(取决于 IsActive)但现在我想在每次选中复选框时更新 ArrayList 但我不能访问 OnClickListener 中的位置:
setListAdapter(new ArrayAdapter<Customer>(this, android.R.layout.simple_list_item_checked, items) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (null == convertView) {
row = mInflater.inflate(android.R.layout.simple_list_item_checked, null);
} else {
row = convertView;
}
CheckedTextView ctv = (CheckedTextView) row.findViewById(android.R.id.text1);
ctv.setText(getItem(position).LastName);
ctv.setChecked(getItem(position).IsChecked);
ctv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckedTextView ctv = (CheckedTextView) v;
ctv.toggle();
// this does not work because I don't have the position
getItem(position).IsChecked = (ctv).isChecked();
}
});
return row;
}
});
我考虑过从 CheckedTextBox 继承并添加一个自定义属性setPosition/getPosition
来存储位置以供以后使用,甚至添加对相关对象的引用,但我想有一个我找不到 atm 的现有解决方案。