AndroidでEclipseのGridViewにバインドする

私はSQLiteデータベースからデータを取得するために次のコードを作成しました。

public Cursor fetchAllScores() {
    return database.query(DATABASE_TABLE, new String[] { KEY_ROWID,
            KEY_PLAYDATE, KEY_NUMVALA, KEY_NUMVALB }, null, null, null,
            null, null);
}

次に、main.javaファイルで次のようにこの関数を呼び出します

cursor = dbHelper.fetchAllScores();
    startManagingCursor(cursor);

カーソルを持つと、次のコードを使用してmyGridViewにデータを設定します

GridView myGV = (GridView)findViewById(R.id.gridView1);

    String[] cols = new String[] { scoreDbAdapter.KEY_PLAYDATE, scoreDbAdapter.KEY_NUMVALA, scoreDbAdapter.KEY_NUMVALB};
    int[]   views = new int[] { android.R.id.text1, android.R.id.text2, android.R.id.text2 };

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            android.R.layout.simple_list_item_1, cursor, cols, views);

    Log.w("NumRows",adapter.getCount() + "");

    myGV.setAdapter(adapter);

今問題は、最初の行には最初の2つの列があり、forst行(2011-10-27、5,6)、2番目の行(2011-10-26,3,2)のようなデータが必要ですが、行のようなものです(2011-10-27、2011-10-26)。

これはGridViewで修正できますか?

1
答えの下にstを見てください。
追加された 著者 user370305,

2 答え

ご質問については、 AdapterViewによるデータへのバインドをご覧ください。

注:以下の説明は、カーソルをアダプターにバインドする方法の例です。

レイアウトでデータを入力する

レイアウトにデータを挿入するには、通常、アダプタにAdapterViewクラスをバインドします。アダプタは外部ソース(おそらく、コードがデバイスのデータベースに結果を提供または照会するリスト)からデータを取得します。

次のコードサンプルは、次の処理を行います。

1.既存のビューを使用してSpinnerを作成し、ローカルリソースから色の配列を読み取る新しいArrayAdapterにバインドします。

2.ビューから別のSpinnerオブジェクトを作成し、デバイスの連絡先から人の名前を読み取る新しいSimpleCursorAdapterにバインドします(Contacts.Peopleを参照)。

//Get a Spinner and bind it to an ArrayAdapter that 

//references a String array.

Spinner s1 = (Spinner) findViewById(R.id.spinner1);

ArrayAdapter adapter = ArrayAdapter.createFromResource(    this, R.array.colors,
 android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

s1.setAdapter(adapter);

// Load a Spinner and bind it to a data query.
private static String[] PROJECTION = new String[] { People._ID, People.NAME};

Spinner s2 = (Spinner) findViewById(R.id.spinner2);
Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);

SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,cur,new String[] {People.NAME}, new int[] {android.R.id.text1});

adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapter2);

CursorAdapterで使用される投影でPeople._ID列を持つ必要があることに注意してください。そうしないと、例外が発生します。

アプリケーションの寿命の間に、アダプタによって読み取られる基になるデータを変更する場合は、notifyDataSetChanged()を呼び出す必要があります。これは、データが変更され、それ自体をリフレッシュする必要があることを添付ビューに通知します。

詳細はこちらをご覧ください。

Custom CursorAdapters.

ありがとう。

0
追加された

textViewsを含む新しいレイアウトを作成します。下のコードの最初の行に示すレイアウトを探し、データをlistViewに添付します。 ListViewは、textViewを含むレイアウトをロードします。

private void populateGrid()
{

    ListView lv = (ListView)findViewById(R.id.listView1);

    Cursor c = dbHelper.fetchAllScores();
    startManagingCursor(cursor);

    String[] cols = new String[] { TodoDbAdapter.KEY_PLAYDATE, TodoDbAdapter.KEY_NUMVALA, TodoDbAdapter.KEY_NUMVALB};
    int[]   views = new int[] { R.id.txt_date, R.id.txt_no, R.id.txt_yes};

   //Now create an array adapter and set it to display using our row
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            R.layout.listviewtemp, c, cols, views);

    Log.w("NumRows",adapter.getCount() + "");

    lv.setAdapter(adapter);

}

R.layout.listviewtempはlistViewテンプレートレイアウト(別のxml)、lvはmainlayout.xmlにあるlistviewです。

public Cursor fetchAllScores() {
    return database.query(DATABASE_TABLE, new String[] { KEY_ROWID,
            KEY_PLAYDATE, KEY_NUMVALA, KEY_NUMVALB }, null, null, null,
            null, null);
}
0
追加された