У меня есть:
public class MyList extends ListActivity {
SimpleAdapter simpleAdapter;
Связывание с ListView
выполняется с помощью ViewBinder
:
simpleAdapter = new SimpleAdapter(this, getData(path),
R.layout.menu_row, new String[] {
..., "checked" }, new int[] {..., R.id.checkBox1 });
SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
if (view.getId() == R.id.checkBox1) {
CheckBox checkBox = (CheckBox) view;
checkBox.setChecked(Boolean.parseBoolean((String) data));
Мой xml похож на этот, clickable
и focusable
помогает тому, что строка ведет себя как одна.
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"
/>
У меня также есть:
protected void onListItemClick(ListView l, View v, int position, long id) {
который взаимодействует с событием click. До сих пор это хорошо работает, моя проблема в том, что когда я нажимаю на строку, CheckBox
не меняет свое визуальное состояние. Что я могу сделать?
Поместите button.setChecked(true)
в ваш onListItemClick (или код для переключения вперед и назад с помощью setChecked).
РЕДАКТИРОВАТЬ
Не поняли вашу проблему. Вы сказали адаптеру, что набор данных был изменен?
Я думаю, что вы хотите заглянуть в CheckedTextView
который показывает флажок, и когда элемент списка CheckedTextView
установите флажок