0

sqliteデータベースからデータを取得する方法の基本的な前提があり、logcatに返されたアイテムをログに記録することができます。ただし、そのデータをリストビューに出力するための最良の方法を見つけられないようです。

最初は、データを配列に入れて、その配列を使用してリストビューを設定しようと思っていましたが、周りを見回すと、カーソルをデータソースとしてリストビューに直接リンクできますが、頭を悩ませることはできません。 。

これが私のMainActivityです(もう少し解決したら、SQLを独自のヘルパークラスに入れますが、今のところはすべてメインアクティビティからのものです)

私の主な活動は次のとおりです。

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       SQLiteDatabase db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null);
       Cursor c = db.rawQuery("SELECT * FROM MyTable", null);
       c.moveToFirst();
       Log.e("TomDebug", c.getString(c.getColumnIndex("FirstName")));
       db.close();

    }

}

私のレイアウトactiviy_main.xmlは次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="fill" >

    <ListView
        android:id="@+id/derooms"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>

私のテーブルには3つの列がありますが、今のところ、データベース内のすべてのFirstNameをリストビューに吐き出すだけで満足しています。

トム

4

2 に答える 2

1

リストビューに行をコーディングしていないようです。貢献への努力が弱いため、質問に答えるべきではありません。とにかく、ここに答えのデモコードがあります(exacltyがすべての要件を実行するわけではありません):

(1)list_view_item.xmlリストビューに情報を表示するために作成します。例:aデータフィールドを表示します。

(2)DataBoundAdapterDBカーソルの結果にバインドするために作成します。

public class DataBoundAdapter extends CursorAdapter 
{
    Context _context;

    public DataBoundAdapter(Context context, Cursor c, boolean autoRequery) {
        super(context, c, autoRequery);
        _context = context;
    }

    @Override
    public void bindView(View view, Context c, Cursor cur) 
    {
        // TODO: handle data when binding to your list view
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) 
    {
        int item_view_id = R.layout.list_view_item;

        //inflate item view to list view holder
        LinearLayout holderView = new LinearLayout(_context);
        String inflaterName = Context.LAYOUT_INFLATER_SERVICE;
        LayoutInflater inflater = (LayoutInflater) _context.getSystemService(inflaterName);
        inflater.inflate(item_view_id, holderView, true);

        return holderView;
    }
}

(3)でMainActivity.onCreate(..)

ListView myListView = (ListView)findViewById(R.id.derooms);
DataBoundAdapter dbAdapter = new DataBoundAdapter(this, your_db_cursor, true);
myListView.setAdapter(dbAdapter);
于 2012-09-04T13:31:59.263 に答える
0

CursorAdapterが必要です。http://developer.android.com/reference/android/widget/CursorAdapter.htmlを参照してください

SimpleCursorAdapterを使用して開始できます。11歳以上をターゲットにしている場合は、 http: //developer.android.com/reference/android/content/CursorLoader.htmlをご覧ください。

于 2012-09-04T12:16:38.413 に答える