У меня есть ListView, который я пытаюсь использовать со списком проверяемых элементов. Я вызываю метод toggle () в своем классе элементов списка в ArrayAdaptor, но флажок не отмечен в пользовательском интерфейсе. Тем не менее, я могу подтвердить, что в пользовательском интерфейсе выбраны правильные элементы , и что статус isChecked () сообщает правильно - только пользовательский интерфейс вообще не меняется. Существуют ли какие-либо специальные методы, которые мне нужно вызывать для обновления графического флажка для пользовательского интерфейса?
Другими словами - как программно сообщить пользовательскому интерфейсу, что флажок должен отображаться как «отмечен»? Кажется, это должен быть очень простой процесс, но у меня было много проблем с поиском этой информации.
Код выглядит следующим образом:
Для класса данных элемента в ArrayAdaptor:
public class SelectedItemData extends CheckedTextView {
public String _item_name;
public String getItemName()
{
return _item_name;
}
public void setItemName(String in_name)
{
_item_name = in_name;
}
// methods
public SelectedItemData(Context context) {
super(context);
init();
}
public void init()
{
this._item_name = "UNSET";
this.setChecked(false);
}
@Override
public String toString()
{
return _item_name;
}
}
В классе Activity (находится в методе onCreate):
_selectedItemsListView = (ListView) findViewById(R.id.selected_items_listview);
_selectedItemsListView.setItemsCanFocus(false);
_selectedItemsListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
_selectedItemsListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listview, View view, int position, long id) {
@SuppressWarnings("unchecked")
ArrayAdapter<SelectedItemData> itemsAdapter = (ArrayAdapter<SelectedItemData>)_selectedItemsListView.getAdapter();
SelectedItemData selectedItem = itemsAdapter.getItem(position);
selectedItem.toggle();
Toast.makeText(view.getContext(), "Item " + selectedItem.getItemName() + " Selected!", Toast.LENGTH_SHORT).show();
Log.d(TAG, "Is Item Checked? " + selectedItem.isChecked());
_selectedItemsListView.setAdapter(itemsAdapter);
}
});
Любое руководство о том, как включить в пользовательском интерфейсе правильное отображение того, что один из элементов был выбран / отмечен, было бы замечательно. Спасибо!