Используя CustomAdapter в ListView, мне нужно вручную проверить / снять флажок CheckBox. Как мне это сделать?
Я чувствую, что этот вопрос был опубликован тысячу раз. Есть несколько случаев, когда я очень близко подхожу к ответу, но он всегда проскальзывает сквозь пальцы.
Что я хочу сделать, так это то, что когда я нажимаю на строку списка, я вручную отключаю / проверяю флажок этой строки.
Другими словами: когда я щелкаю строку listView, мне нужно получить связанный с ним объект CheckBox, чтобы я мог изменить его значение.
Я чувствую, что ответ - это что-то вроде вызова или воспроизведения метода holder.CheckBox.setOnClickListener (который обрабатывает состояние CheckBox внутри CustomAdapter) внутри метода listview.setOnItemClickListener, но я не знаю, как это сделать:(
Просто чтобы прояснить - я могу узнать, какая строка была нажата, какой флажок был нажат, их положение и все данные о нем. Если я нажимаю флажок, он проверяется без проблем. Единственное, что я не могу сделать, это установить флажок, когда я нажимаю текст рядом с полем.
Я могу опубликовать код, если требуется, но, поскольку я не уверен, если это необходимо, я избегу превращать этот вопрос в текстовую стену.
2 ответа
ListView myListView = (your listView);
myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
ViewGroup currentItem = (ViewGroup)myListView.getChidAt(arg2);
(CheckBox) currentCheckBox = currentItem.findViewById(---id of the checkBox );
currentCheckBox.setChecked(true);
}
});
У меня есть пример того, что вам нужно, но у меня есть это с изображением, когда вы нажимаете на это меняется на другое:
final ImageView ui_fav = (ImageView) item.findViewById(R.id.fav_channelrow);
if (canales.get(position).getIsFav() == true) {
ui_fav.setImageResource(R.drawable.star);
} else {
ui_fav.setImageResource(R.drawable.silver_star);
}
ui_fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (canales.get(position).getIsFav()) {
ui_fav.setImageResource(R.drawable.silver_star);
canales.get(position).setIsFav(false);
} else {
ui_fav.setImageResource(R.drawable.star);
canales.get(position).setIsFav(true);
}
}
});