Разделение столбцов в списке

Я пытаюсь разделить разные столбцы данных, которые отображаются в моем списке. Код адаптера выглядит следующим образом:

public class SQLiteDemo extends ListActivity {

    private SQLiteDatabase database;

    private CursorAdapter dataSource;


    private static final String fields[] = { "firstname", "lastname", "resourceid", BaseColumns._ID };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        DatabaseHelper helper = new DatabaseHelper(this);
        database = helper.getWritableDatabase();
        Cursor data = database.query("cards", fields, null, null, null, null,
                null);

        dataSource = new SimpleCursorAdapter(this, R.layout.second, data, fields,
                new int[] { R.id.firstname, R.id.secondname, R.id.name });

        ListView view = getListView();
        view.setHeaderDividersEnabled(true);
        view.addHeaderView(getLayoutInflater().inflate(R.layout.second, null));

        setListAdapter(dataSource);

Я определил список в моем файле макета (мне нужно сделать это для представления инфлятора?)

Я попытался добавить разделители следующим образом....

   <ListView android:id="@android:id/list" 
             android:layout_width="fill_parent"
             android:layout_height="fill_parent" 
             android:visibility="visible"
             android:divider = "@android:color/transparent"
             android:dividerHeight ="10.sp" />

Кажется, что после добавления элементов разделителя нет никакой разницы; Что я делаю не так?

Чтобы было ясно, я полный андроид-нуб, не ищу полный ответ (хотя иногда они могут быть полезны), просто подтолкнуть в правильном направлении было бы более чем достаточно. Спасибо ребята!

РЕДАКТИРОВАНИЕ С R.layout.second

<?xml version="1.0" encoding="utf-8" ?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
                android:layout_height="wrap_content" 
                android:id="@+id/rowLayout" 
                android:orientation="horizontal" 
                android:layout_width="fill_parent">
  <TextView     android:layout_width="wrap_content"
                android:layout_alignParentTop = "true"
                android:layout_alignParentLeft="true" 
                android:layout_height="wrap_content" 
                android:id="@+id/firstname" 
                android:text="FirstName"/> 
  <TextView     android:layout_width="wrap_content" 
                android:layout_toRightOf = "@+id/firstname"
                android:layout_height="wrap_content" 
                android:id="@+id/secondname" 
                android:text="SecondName" 
                />
  <TextView     android:layout_width="wrap_content" 
                android:layout_toRightOf = "@id/secondname" 
                android:layout_height="wrap_content" 
                android:id="@+id/name" 
                android:text="ResourceID" 
                />
   <ListView android:id="@android:id/list" 
             android:layout_width="fill_parent"
             android:layout_height="fill_parent" 
             android:visibility="visible"
             android:dividerHeight ="10.sp" />

  </RelativeLayout>

Теперь, когда я знаю, что она делает, я удалил прозрачность разделителя.


person chris    schedule 12.07.2011    source источник


Ответы (1)


У вас неправильное понимание. Вы используете один и тот же макет (R.layout.second) для двух разных вещей. Вам нужен один макет для всего экрана, который содержит ListView (т.е. R.layout.second).

setContentView(R.layout.second)

А затем вы используете другой макет (например, mycell.xml), чтобы определить внешний вид одиночной строки в этом ListView.

new SimpleCursorAdapter(this, R.layout.mycell, data, fields, new int[] { R.id.firstname, R.id.secondname, R.id.name });

Разделитель рисуется горизонтально для каждой строки в вашей базе данных. Вы сделали его невидимым.

Если вы хотите иметь разделители между именем, фамилией и т. д. (для каждого столбца), вам необходимо отредактировать макет, который вы используете для строк (R.layout.mycell).

person thaussma    schedule 12.07.2011
comment
Привет - спасибо за ответ - упс, тогда еще одна ошибка новичка у меня за плечами. Этот фрагмент списка выше хранится в R.layout.second, я полагаю, вы не имеете в виду это - и на самом деле имеете в виду раздел «относительный макет»? - person chris; 12.07.2011
comment
Спасибо, Херрманн. Тогда он зафиксировал еще одну ошибку новичка. По крайней мере, мы лучше всего учимся у них, а? Любые советы о том, как определить макет ячейки? немного сверх того, что я читал, я думаю. - person chris; 12.07.2011
comment
Хм, это настолько базовые вещи, что вы найдете много руководств по этому поводу. Вы уже скопировали некоторый код, который, я думаю, использует макеты для ячеек. Но начните с этого developer.android.com/resources/tutorials/views. / - person thaussma; 12.07.2011
comment
Spiffing, разобрался, извините, мне просто было лень просить помощи с этим сейчас. Не понимал, что могу просто использовать стандартный линейный макет с текстовым представлением, думал, что это будет сложнее. Большое спасибо за помощь вы были здорово! - person chris; 12.07.2011