2011-10-28 51 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

谢谢。