我的DBAdapter中有一个getAll,它应该从数据库中提取所有数据:
public Cursor getAllFinalscores()
{
return db.query(DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_DATE,
KEY_FINALSCORE,
KEY_HOLESPLAYED},
null, null, null, null, null);
}
而且现在,我已经拥有它,以便当用户想要查看所有数据时(来自主要活动),它将全部拉出来,如下所示:
public void DisplayFinalscore(Cursor c)
{
Toast.makeText(this,
"DATE: " + c.getString(1) + "\n" +
"FINALSCORE: " + c.getString(2) + "\n" +
"HOLESPLAYED: " + c.getString(3),
Toast.LENGTH_LONG).show();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.past_games:
DBAdapter db = new DBAdapter(this);
db.open();
Cursor c = db.getAllFinalscores();
if (c.moveToFirst())
{
do {
DisplayFinalscore(c);
}
while (c.moveToNext());
}
db.close();
}
return true;
}
然而,这可以将它们全部显示为弹出的小消息。我希望将它们显示在单独屏幕上的列表中。
我创建了一个新类(PastGames),如下所示:
public class PastGames extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pastgames);
DBAdapter db = new DBAdapter(this);
db.open();
Cursor c = db.getAllFinalscores();
startManagingCursor(c);
String[] from = new String[] { DBAdapter.KEY_DATE};
int[] to = new int[] {R.id.text1};
SimpleCursorAdapter games = new SimpleCursorAdapter(this, layout.pastgames_row, c, from, to);
setListAdapter(games);
db.close();
}
}
我也有我的xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_games"/>
和行布局
<TextView android:id="@+id/text1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
可以帮助我完成我需要做的工作,以便将这些信息纳入这些布局吗?
谢谢!
答案 0 :(得分:0)
好的,有些事情:
首先,要访问数据库,您应该使用SQLiteOpenHelper。它可以帮助您读/写它并创建/更新数据库。
此外,startManagingCursor()
- 方法已弃用,不应再使用。如果您需要关闭光标,请手动执行。
不要在onCreate
- 方法中打开数据库连接,因为它只在首次创建活动时调用。请改用onStart
- 方法。另外,请勿使用onCreate
- 方法填充List。为此创建一个新方法,并在onStart
- 方法中调用它。如果活动得到后盾并再次进行预设,则旧数据不会出现问题。
此外,如果您有ListActivity
,则不需要包含ListView
的布局。这是自动完成的。
这就是我目前所看到的一切。如果您收到任何错误或异常,请发布这些消息。看看这是否会让你更进一步。