Используя 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);
        }
    }
});
Другие вопросы по тегам