2011-10-28 89 views
1

我已經做了以下代碼來從SQLite數據庫中檢索數據。Android將SQLite綁定到Eclipse中的GridView

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

然後我用下面

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); 

現在叫我main.java文件這一功能問題是隻有第一行是填充和前兩列,我想數據像在行(2011-10-27,5,6)和第二行像(2011-10-26,3,2),但我得到的是隻有像(20 11-10-27,2011-10-26)。

這可以在GridView中修復嗎?

+0

看看下面的答案ST。 – user370305

回答

0

製作一個包含textView的新佈局。找到下面代碼第一行所示的佈局,並將數據附加到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發現列表視圖。

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

對於你的問題,看看這裏,Binding to Data with AdapterView

注意:以下描述僅僅是如何將光標綁定到適配器的示例。

與Data

插入數據佈局填充佈局通常由適配器視圖類結合到一個適配器,其從外部源檢索數據(可能是一個列表進行該代碼用品或查詢結果來自設備的數據庫)。

下面的代碼示例執行下列操作:

1.Creates一微調與現有的視圖,並將其綁定到一個新的ArrayAdapter讀取的顏色從本地資源的陣列。

2.從View創建另一個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

謝謝。