我在简单的Android应用程序中实现sqlite数据库时遇到了一些麻烦:
用户在Listview中显示动物列表。选择动物,用户被带到活动“动物”,该动物将显示动物的图片并为其提供选项
到目前为止一切都很简单,对吧?
我正在使用数据库,它将填充animalsView的数据库。数据库目前看起来像
表动物 - _ID, 名称
表传记 - _ID, 生物
在这里,我欢迎任何有关我的问题或如何改进我的实施的有用建议。
目前按以下方式填充数据库
long populateDB(){
String[] animalName = {"Lion" "Zebra", "Tiger", "Gorilla",...};
String[] animalBios = {"Found in the "...}
ContentValues animalNameVals = new ContentValues();
ContentValues animalBioVals = new ContentValues();
long[] rowIds = new long[animalName.length];
// Populate the animal table
for(int i = 0; i < animalName.length; i++){
animalNameVals.put(KEY_ANIMALNAME, animalName[i]);
rowIds[i] = db.insert(ANIMAL_TABLE, null, animalNameVals);
}
// Populate the Bio table
for(int j = 0; j < bios.length; j++){
animalBioVals.put(KEY_BIO, bios[j]);
rowIds[j] = db.insert(BIOS_TABLE, null, animalBioVals);
}
return rowIds[0];
}
并且计划通过传递额外内容来告诉数据库列表中的哪个动物,例如,如果listItemClick == 1上的位置,传入虎并从db中检索tiger bio。
问题:
然后在Animal活动页面上是getExtra()== tiger,告诉活动从列表中选择了老虎并从DB..well加载这个bio,我看不出这个想法的有效实现方法我正在努力这样做。
我的第二个头痛来自于从Db添加bio到应用程序。原始我在一个字符串中有一个硬编码的测试生物,在TextView中显示。有没有办法从光标中检索字符串并将其添加到TextView id?我明白我需要一些适配器,我不明白为什么它不能像setResource(R.id.bio)= bio那样简单。
感谢您的阅读,任何帮助都很受欢迎。
答案 0 :(得分:0)
第一个问题:首先,我不确定您为什么在Bio
- 表中没有列Animal
?由于没有Bio
适合任何其他动物而不是它自己,你可以安全地做到这一点。通过这样做,您可以在选择时查询数据库,并将整个对象(包括动物和生物的名称)传递给下一个活动,并使用它来获取您的信息。如果这有点不清楚,请告诉我,我会尝试更好地解释它。
第二个问题:您可以使用Cursor
从表格(也包括字符串)中获取值。要获取String,您可以执行以下操作:cursor
是Cursor,其中包含数据库中的结果:
String bio;
// Move Cursor to its first element
if(cursor.moveToFirst()) {
// Make sure the cursor is not null
if(cursor != null) {
bio = cursor.getString(cursor.getColumnIndex("Bio")));
}
}
旁注:如果我正确阅读了代码,您似乎使用long
作为ID?据我所知,关于ID的常见问题是integers
。