我正在制作一个记住CountDownTimer
值的Android应用程序(类似于最佳得分)。我已经构建了一个存储值的SQLite数据库。但是现在我想创建一个新的活动(比如登录活动),用户在其中签名,然后CountDownTimer
活动只打开这个用户分数。
在活动中,您通过查询数据库创建的Cursor从数据库中提取数据。然后,使用提取的数据填充相应的视图或视图。
假设您的数据库有一个名为timervalues的表,其中有2列名为cdt_value和userid,那么提取数据的代码可以是: -
Cursor csr = db.query("timervalues",null,"userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);
然后,您可以使用以下内容从光标检索数据: -
long[] scores = new long[csr.getCount];
while (csr.moveToNext) {
scores[csr.getPosition] = csr.getLong(csr.getColumnIndex("cdt_value");
}
csr.close();
因此,如果你有一个TextView,它的id设置为tv_score,你想显示第一个分数,那么你可以使用: -
this.findViewById(R.id.tv_score).setText(Long.toString(scores[0]));
如果你想使用ListView将分数显示为列表,那么你就不会使用你使用对象数组的long数组(你可以使用Long),或者直接使用Cursor。
假设您有一个ListView,其id设置为lv_scorelist,那么您可以使用: -
ListView scorelist = this.findViewById(R.id.lv_scorelist);
Cursor csr = db.query("timervalues",null,"userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);
sca = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,csr,new String[]{"cdt_value"},new int[]{android.R.id.text1},0);
scorelist.setAdapter(sca);
_id
的列,这可以通过使用“rowid AS _id,*”而不是null作为WITHOUT ROWID
方法的第二个参数来提取游标时实现(如果表定时器值未使用query
定义)而不是
Cursor csr = db.query("timervalues",null,"userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);
它可能是
Cursor csr = db.query("timervalues","rowid AS _id,*","userid=?",new String[]{Long.toString(userid_to_find)},null,null,null);