Android: Как получить событие, когда в ListView установлен флажок? - PullRequest
2 голосов
/ 23 апреля 2011

Я новичок в Android, я пытаюсь сделать простое приложение, в котором я должен отобразить список контактов, доступных в телефонной книге, в приложении ListView в приложении, я пытаюсь добавить флажок для каждого элемента.Когда пользователь устанавливает флажок, я хочу получить элемент.Пока что я могу отобразить список, но неясно, как проверить событие проверки флажка.

Мой код выглядит следующим образом:

XML-файлы:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

<ListView 
    android:id="@android:id/android:list" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight = "1"
    android:choiceMode="multipleChoice" android:clickable="true"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id ="@+id/savebutton"
    android:text = "save"
    />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

<ListView 
    android:id="@android:id/android:list" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight = "1"
    android:choiceMode="multipleChoice" android:clickable="true"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id ="@+id/savebutton"
    android:text = "save"
    />

</LinearLayout>

Исходный код:

public class testcontacts extends ListActivity 
{
    private ListAdapter adapter = null;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //CheckBox box = (CheckBox)findViewById(R.id.checkbox);
        //box.setFocusable(false);

        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
                null, null, null, null);

        adapter = new SimpleCursorAdapter
        (this, R.layout.contact_entry, cur,new String[] {ContactsContract.Contacts.DISPLAY_NAME}, new int[] {R.id.contactEntryText});   
        setListAdapter(adapter);

        ListView list = getListView();
        list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    } 
}

Ответы [ 4 ]

0 голосов
/ 20 февраля 2014

Чтобы создать событие, которое прослушивает события щелчка в элементах списка, вы можете попробовать это:

list.setOnItemClickListener(new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              CheckedTextView textView = (CheckedTextView)view;
              textView.setChecked(!textView.isChecked());
              switchAlarm(textView.isChecked(),position);
          }
        });

Этот код изменит измененное состояние элемента.

Надеюсь, это поможет.

0 голосов
/ 11 октября 2011

Вы можете использовать метод getCheckedItemPosition, чтобы получить позицию проверяемого элемента. Как только у вас есть позиция, вы можете использовать findViewById для извлечения элемента и метод isChecked для проверки. Вот пример:

     int pos = list.getCheckItemPosition(); //list being a ListView previously defined
     //Look for the checked CheckBox in the particular position
     CheckBox checkBox = (CheckBox)findViewById(pos);
     if (checkBox.isChecked()) {
     //Do something here
 }

Надеюсь, это помогло.

0 голосов
/ 14 октября 2011

В элементе listView onclick.Сделайте это следующим образом ..

 CheckBox chkBox = (CheckBox) viewRow.findViewById(R.id.checkBoxXML);

этот флажок будет иметь то же состояние, что и выбранный флажок listitem.

0 голосов
/ 23 апреля 2011

Это даст позицию проверенного элемента

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