У меня есть CheckedTextView, и этот флажок не обновляется до следующего щелчка.Анкета CheckedTextView Android не обновляется до следующего щелчка
Моя активность расширяет Activity вместо ListActivity, потому что у меня есть listView и кнопка в макете.
Я устанавливаю ListView ItemClickListener следующим образом. Проблема заключается в том, что флажок не отображается как «проверено» до щелчка другого элемента. Поэтому я нажимаю строку 3, затем я выбираю строки 4 и строки 3. Нажмите строку 10, а строка 4, наконец, подсвечивается. Когда я говорю «выделить», я имею в виду, что флажок становится зеленым.
Я не уверен, какой метод нужно вызвать, чтобы заставить этот флажок перерисовывать/обновлять сам. Я пробовал вызывать cbview.refreshDrawableState(); и cbview.getCheckMarkDrawable(). invalidateSelf(); после setChecked, но они, похоже, ничего не делают.
listView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView cbview = (CheckedTextView)view;
boolean checked = cbview.isChecked();
cbview.setChecked(!checked);
Log.d("Test", "clicked:" + position + " : " + id);
}
});
ОБНОВЛЕНО: ОТВЕТ:
должен был сделать мой адаптер окончательный:
final ArrayAdapter<MyOption> adapter = new ArrayAdapter<MyOption>(this,
android.R.layout.simple_list_item_checked, options);
, а затем вызвать adapter.notifyDataSetChanged() в onItemClick:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView cbview = (CheckedTextView)view;
boolean checked = cbview.isChecked();
cbview.setChecked(!checked);
Log.d("Test", "clicked:" + position + " : " + id + ":" + cbview.isChecked());
adapter.notifyDataSetChanged();
}
Я считаю, что вызов 'setChecked()' перерисовывает 'view', что вызывает вызов' invalidate() '. То же самое с 'setText()' на 'TextView' – codeMagic
просто попробовал вызвать его после setChecked. Не работает – headlikearock
как насчет этого ..? 'listViewAdapater.notifyDataSetChanged();' – k1komans