Кнопка-переключатель просмотра списка Android - PullRequest
1 голос
/ 06 декабря 2011

У меня есть Listview, в котором перечислены аварийные сигналы, которые находятся в базе данных. Мне нужно добавить кнопку Toggle рядом с каждым элементом списка, чтобы включить / выключить аварийный сигнал.

Как я могудобавьте кнопку Toggle в ListView?

R.layout.alarm_list:

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

    <ListView android:id="@+id/android:list"
      android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
   <TextView android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_reminders"
        android:textColor="#FFF"/>
     </LinearLayout>

Java-код:

      private void fillData() {
    Cursor remindersCursor = aDbHelper.fetchAllAlarms();
    startManagingCursor(remindersCursor);

    // Create an array to specify the fields we want to display in the list
    // (only TITLE)
    String[] from = new String[] { AlarmDbAdapter.KEY_TITLE };

    // and an array of the fields we want to bind those fields to (in this
    // case just text1)
    int[] to = new int[] { R.id.text1};

    // Now create a simple cursor adapter and set it to display
    SimpleCursorAdapter reminders = new SimpleCursorAdapter(this,
            R.layout.alarm_row, remindersCursor, from, to);

    setListAdapter(reminders);
   }

R.layout.alarm_row:

   <?xml version="1.0" encoding="utf-8"?>

   <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text1"
    android:padding="10dip" android:layout_width="242dp"  
         android:layout_height="wrap_content"/>

Мой проект задерживается.

Справка

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Попробуйте создать собственный адаптер, например:

public class YourAdapter extends BaseAdapter

и пользовательский макет для строк с помощью кнопки-переключателя (вам придется надувать макет в методе geView).

Здесь вы можете найти пример: http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

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

0 голосов
/ 06 декабря 2011

Нет маленьких фрагментов ответа. к вашей проблеме. Я полагаю, вам нужно иметь несколько вариантов выбора. Теперь вот то, что вам нужно.

Поскольку вы используете SimpleCursorAdapter, вам следует заменить его на CursorAdapter. Для этого вы должны расширить его как абстрактный адаптер. Как только вы это сделаете, вы переопределите две функции.

  • newView Где вы будете создавать виды элементов списка, надувая R.layout.alarm_row (в нем также должна быть ваша кнопка переключения). У вас есть кнопка переключения не активируемая.
  • bindView, где вы будете устанавливать состояние переключателя и текста для просмотра текста

Это говорит о том, что вам нужно на стороне деятельности.

  • Вы перевели свой ListView в режим множественного выбора с помощью android:choiceMode в xml или с помощью setChoiceMode.

Теперь bindView будет выглядеть так:

ListView lv = ((ListActivity)context).getListView();
// Containing all check states
SparseBooleanArray sba = lv.getCheckedItemPositions();


// I am using check box

cb.setChecked(false);

// Cursor is passed as an argument.
if(sba != null)
  if(sba.get(cursor.getPosition()))
     cb.setChecked(true);

Ссылка на документы:

http://developer.android.com/reference/android/widget/CursorAdapter.html http://developer.android.com/reference/android/widget/ListView.html

...