我应该使用什么样的适配器将数据从ArrayList传输到ListView?

时间:2013-07-31 23:37:04

标签: java android sqlite listview adapter

我正在尝试将数据从数据库传输到ListView。以前,我使用SimpleCursorAdapter从包含所有数据的游标传输数据,但现在,我需要将数据从五个列表传输到5个ListViews,我将光标分割成。我不认为我可以使用ArrayAdapter,因为我的数据库有多列。我不太确定如何创建自己的适配器,虽然我已经读过我可以使用它。我只是不知道如何从BaseAdapter创建自己的适配器。

这是我的片段布局文件

<?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">
          /* ....(I skipped much of the irrelevant code here) */
     </LinearLayout>

    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/mainList"
            android:layout_gravity="left|center_vertical"
            android:layout_weight="1"/>
    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/lunchList"
            android:layout_gravity="left|center_vertical"
            android:layout_weight="1"/>
    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/dinnerList"
            android:layout_gravity="left|center_vertical"
            android:layout_weight="1"/>
    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/snackList"
            android:layout_gravity="left|center_vertical"
            android:layout_weight="1"/>
    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/exerciseList"
            android:layout_gravity="left|center_vertical"
            android:layout_weight="1"/>
</LinearLayout>

Fragment中的代码(我目前用于传输数据)

    //Append Test Case to Database
    db.createEntry(test);

    //SimpleCursorAdapter Sequence
    cursor = db.getAllEntries();
    String[] from = {DESCRIPTION, CALORIES, SERVINGSIZE, DATE};
    int[] to = {R.id.description, R.id.calories, R.id.servingSize, R.id.dateBox};
    adapt = new SimpleCursorAdapter(getActivity(), R.layout.journal_inner_view, cursor,    from, to, 1);
    ListView listItem = (ListView) getActivity().findViewById(R.id.mainList);
    listItem.setAdapter(adapt);
    //To be implemented for delete and edit commands /*listItem.getOnItemLongClickListener();*/

用于创建数据库的SQL

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_JOURNAL + " (_id integer primary key autoincrement, " //NON-NLS-1$
                        + JournalDBAdapter.MEAL + " TEXT, " //NON-NLS-1$
                        + JournalDBAdapter.DESCRIPTION + " TEXT, " //NON-NLS-1$
                        + JournalDBAdapter.DATE + " TEXT, " //NON-NLS-1$
                        + JournalDBAdapter.CALORIES + " INTEGER, " //NON-NLS-1$
                        + JournalDBAdapter.SERVINGSIZE + " INTEGER" //NON-NLS-1$
                        + " );"); //NON-NLS-1$ //NON-NLS-2$);

2 个答案:

答案 0 :(得分:0)

简单,将数据库中的结果存储到对象的arraylist中。使用数组适配器将这些添加到列表视图中。我想不出更简单的方法......

答案 1 :(得分:0)

为了这个目的,我在我的应用中使用CustomAdapter扩展ArrayAdapter

查看此link以获取示例。