2011-04-10 48 views
0

我有一些麻烦,在实施我的简单的Android应用程序SQLite数据库基本问题:的Android:具有与SQLite数据库

用户显示动物名单中Listview.Upon选择动物用户带来到活动“动物”,这将显示动物的图片,并给他们选项

  • 视图动物生物
  • 回到

迄今为止非常简单,对吗?

我使用的数据库,这将填充animals.Database的ListView控件目前看起来像

表动物 - _ID, 名称

表Biography- _ID, 生物

这是我欢迎任何有关我的问题的有用建议,或者如何改进我的实施。

目前填充DB如下

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检索虎生物。

问题:

然后动物活动页面上为getExtra()==虎,告诉老虎被从列表中选择,并从DB..well加载该生物的活动,我不能看到这个想法的一个有效的实现方法,并且正在努力这样做。

我的第二个头痛来自于将生物添加到Db的应用程序中。原来我有一个测试生物硬编码在一个字符串中,显示在TextView中。是否有从光标检索字符串并将其添加到TextView ID?我知道我需要一些适配器,但我不明白的是为什么它不能像setResource(R.id.bio)= bio一样简单。

感谢您的阅读和任何帮助,非常appriciated。

回答

0

第一个问题:首先,我不确定为什么你没有在Animal -table列Bio列?由于没有Bio适合于任何其他动物比自己,你可以安全地做到这一点。通过这样做,您可以在选择时查询数据库,并将整个对象(包括动物名称和生物名称)传递到下一个活动并使用它来获取您的信息。如果这有点不清楚,让我知道,我会试着更好地解释它。

第二个问题:您可以使用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"))); 
    } 
} 

旁注:如果我正确读取代码,看来你对ID的使用long?就我所知,关于ID的通常情况是integers

+0

嗨,pecka,你说的生物与动物共享相同的数据库是正确的,我原本打算试试我的外键实现,但决定暂时离开它。感谢代码,它证明了我试图实现的目标。 – Jnanathan 2011-04-10 17:34:36