我有一個ListView,我試圖使用一個可檢查的項目列表。我在ArrayAdaptor中的列表項類上調用toggle()方法,但複選框未在UI中打勾。但是,我可以確認在UI中選擇了正確的項目爲,並且「isChecked()」狀態正確報告 - 只是UI根本不會改變。我需要調用哪些特殊方法來更新用戶界面的複選框圖形?複選框不會更改UI中的檢查狀態?
換句話說 - 如何以編程方式告訴UI複選框應顯示爲「已選中」?看起來這應該是一個非常簡單的過程,但是我一直在尋找這些信息時遇到了很多麻煩。
代碼如下:
對於在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;
}
}
在活動類(位於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);
}
});
任何指導關於如何使用戶界面能夠正確顯示其中一個項目已被選中/檢查會很好。謝謝!
注意:我*是*在其他地方設置適配器,我不認爲代碼是相關的?所有的項目都正確填充在列表中 - 我的問題是關於如何讓複選框顯示它已被檢查。 – DashRantic