как захватить событие флажка в ListView - PullRequest
1 голос
/ 03 апреля 2011

Я добавил только чекбоксы в своем ListView.
list_checkbox.xml:
<?xml version="1.0" encoding="utf-8"?><br> <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"<br> android:layout_width="match_parent"<br> android:layout_height="42px"><br> </CheckBox>

В Яве; чтобы захватить событие в списке, я использовал это ::

items1={" "," "," "," "}; //blank i.e. no text near checkbox

lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.list_checkbox, items1));
lv1.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

      // When clicked,put code here.....
    }
  });

а теперь, где и как перехватить событие флажка? подробно плз.
я новичок.
спасибо ..

1 Ответ

6 голосов
/ 06 апреля 2011

Если вы добавите в ListView либо фокусируемые, либо интерактивные представления, ваш OnItemClickListener не будет вызываться. Флажок активируется по умолчанию, поэтому настройка OnItemClickListener в этом случае ничего не даст.

В этом случае вы можете реализовать собственный адаптер (просто расширить ArrayAdapter) и добавить OnClickListener для каждого представления, предоставляемого для ListView.

public class TestAdapter extends ArrayAdapter {
    ...
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        v.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do your logic here eg. if ((CheckBox)v).isChecked()...
             }
         });
         return v;
    }
}

Вы можете найти очень хороший учебник по этой теме здесь . Стоит прочитать всю главу, но ответ на ваш вопрос находится на стр. 112, Интерактивные строки.

Также посмотрите на этот вопрос переполнения стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...