我已经制作了以下代码来从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);
在使用游标之后,我设法使用以下代码
使用一些数据填充myGridViewGridView 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);
现在问题是只填充第一行和前两列,我想要像forst row(2011-10-27,5,6)和第二行一样的数据(2011-10-26,3,2)但我得到的只是最喜欢排(2011-10-27,2011-10-26)。
可以在GridView中修复吗?
答案 0 :(得分:0)
对于您的问题,请查看Binding to Data with AdapterView。
注意:下面的描述只是如何将游标绑定到适配器的示例。
使用数据填充布局
将数据插入布局通常是通过将AdapterView类绑定到适配器来完成的,适配器从外部源(可能是代码提供的列表或从设备的数据库查询结果)中检索数据。
以下代码示例执行以下操作:
1.使用现有View创建一个Spinner,并将其绑定到一个新的ArrayAdapter,该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);
请注意,投影中的People._ID列必须与CursorAdapter一起使用,否则您将获得异常。
如果在应用程序使用期间更改了适配器读取的基础数据,则应调用notifyDataSetChanged()。这将通知附加的View数据已被更改,并且应该自行刷新。
有关详细信息,请查看
感谢。
答案 1 :(得分: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);
}