Отображение дополнительного текста с помощью SimpleCursorAdapter

#android

#Android

Вопрос:

В примере с блокнотом они отображают список заголовков. Как бы вы изменили его, чтобы отобразить вторую строку с основным текстом меньшим шрифтом?

Вот соответствующий код:

     private void fillData() {
    // Get all of the rows from the database and create the item list
    Cursor notesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(notesCursor);

    // Create an array to specify the fields we want to display in the list (only TITLE)
    String[] from = new String[]{NotesDbAdapter.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 notes =
            new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to);
    setListAdapter(notes);
}
  

И это notes_row.xml:

 <?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@ id/text1" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:minWidth="100dp"/>
  

В комментариях четко указано, что он отображает только заголовок. Хотелось бы, чтобы это дало мне несколько советов о том, как также отображать основной текст. (Давайте не будем обсуждать, хорошая ли это идея. Давайте просто предположим, что это необходимо сделать, потому что я пытаюсь адаптировать пример Notepad к своему собственному приложению.)

Ответ №1:

Просто добавьте другой textview в свою строку:

 <?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@ id/text1" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:minWidth="100dp"/>
<TextView android:id="@ id/body" xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:minWidth="100dp"
    android:fontSize="20dp"/>
  

И измените свой метод на следующий:

 private void fillData() {
    // Get all of the rows from the database and create the item list
    Cursor notesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(notesCursor);

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

    // 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, R.id.body};

    // Now create a simple cursor adapter and set it to display
    SimpleCursorAdapter notes =
            new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to);
    setListAdapter(notes);
}
  

Обратите внимание, что это может быть не notesdabadapter.KEY_BODY чтобы получить основной столбец, вы должны иметь возможность искать в своем классе notesdabadapter константу, которая ссылается на имя основного столбца, и использовать ее.

Также — немного поиграйте с размером шрифта (android: FontSize=) … 20dp может быть ОЧЕНЬ маленьким до такой степени, что вы даже не сможете его увидеть (я не тестировал это).