У меня есть представление, в котором пользовательский массив ArrayAdapter является списком. Клиент является Poco:Android Как получить позицию строки в ListView из onClickHandler()
public class Customer {
public String LastName;
public boolean IsActive;
}
Что работает: я sucesfully связан мой 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
сохранить положение для последующего использования или даже добавить ссылку на связанный объект, но я полагаю, что существует существующее решение Я не могу найти атм.
Вы также можете сохранить позицию в checkedtextview теге. – androidworkz