AutoCompleteTextView с настраиваемым списком: как настроить OnItemClickListener - PullRequest
4 голосов
/ 17 марта 2010

Я работаю над приложением, которое использует теги. Доступ к ним должен быть максимально простым. Работа с AutoCompleteTextView кажется мне подходящей. Что я хочу:

  • существующие теги должны отображаться в выбираемом списке с флажком на стороне каждого элемента
  • существующие теги должны отображаться в фокусе AutoCompleteTextView (т.е. не после ввода буквы)

То, что я до сих пор делал, - это сохранение тегов в отдельной таблице sqlite3. Теги запрашиваются, в результате чего появляется курсор. Курсор передается в SimpleCursorAdapter, который выглядит следующим образом:

Cursor cursor = dbHelper.getAllTags();
startManagingCursor(cursor);
String[] columns = new String[] { TagsDB._TAG};
int[] to = new int[] { R.id.tv_tags};
SimpleCursorAdapter cursAdapt = new SimpleCursorAdapter(this, R.layout.tags_row, cursor, columns, to);
actv.setAdapter(cursAdapt);

Как видите, я создал tags_row.xml , который выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:paddingLeft="4dip" android:paddingRight="4dip"
    android:orientation="horizontal">
    <TextView android:id="@+id/tv_tags" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_weight="1"
        android:textColor="#000" android:onClick="actv_item_click" />
    <CheckBox android:id="@+id/cb_tags" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:onClick="actv_item_checked" />
</LinearLayout>

Это выглядит так:

изображение http://img708.imageshack.us/img708/5992/devicem.png

Таким образом, результаты отображаются так, как я хочу. Но прослушиватель TextView onClick не отвечает. И я не имею ни малейшего понятия о том, как получить доступ к данным после того, как элемент (де) выбран.

Поведение списка должно быть следующим:

  • касание элемента CheckBox должно вставить / добавить соответствующий тег в AutoCompleteTextView (теги будут разделены точкой с запятой)
  • касание элемента TextView должно вставить / применить соответствующий тег в AutoCompleteTextView и закрыть список.
...