установить фон строки на флажке, нажатом внутри списка

У меня есть список с 2 текстовыми полями и 1 флажком в каждой строке. Я хочу, чтобы когда пользователь установил флажок, предопределенный рисунок должен быть установлен в качестве фона для этой строки.

Я пытался сделать это на Lisnner с помощью метода getView внутри моего адаптера курсора cusotm, но безуспешно, пожалуйста, помогите!!!.


person Shimon Geld    schedule 27.12.2012    source источник


Ответы (2)


Используйте этот метод getView в своем ListAdapter:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.list_item, null);
    CheckBox checkBox = (CheckBox) view.findViewById(R.id.check);
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            View row = (View) buttonView.getParent();
            if (isChecked) {
                row.setBackgroundResource(R.drawable.list_item_background_checked);
            } else {
                row.setBackgroundResource(android.R.color.transparent);
            }
        }
    });
    return view;
}
person Matthias Robbers    schedule 27.12.2012
comment
теперь, если я хочу, чтобы фон устанавливался не только при нажатии на флажок, но и на все строки, в которых флажок уже установлен, как мне это сделать? - person Shimon Geld; 27.12.2012
comment
Это должно быть неявно. onCheckedChangedListener также выполняется, когда флажок установлен/снят программно. Пожалуйста, примите ответ. - person Matthias Robbers; 27.12.2012

сначала найти идентификатор флажка, затем,

 box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {

            if (isChecked) {
                //set background when checked
            }else{
                //when unselect checkbox change background
            }


        }
    });

если этот код полезен, дайте +1 или примите.

person Harshid    schedule 27.12.2012