2014-11-15 2 views
0

Я использую SQLiteStudio (v2.1.5) для извлечения данных в моей базе данных (dbName), и у меня есть 1 таблица (tbl_Names) и помещается в android. Теперь в моей базе данных есть два идентификатора и имя столбца. В моей базе данных (dbName) у меня есть три имени, состоящих из (Abbygail, Andie, Alysa и т. Д.). Я могу отображать его только в TextView.[UPDATE] как отображать ваши данные в android listview

Это мой ВЕСЬ КОД:

Строка DB_PATH = "";
SQLiteDatabase db;
Файл dbfile;
TextView txtBabyName1, txtBabyName2, txtBabyName3;
SQLiteDatabase writedb;

@Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); }

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    if(android.os.Build.VERSION.SDK_INT >= 17){ 
     DB_PATH = getApplicationContext().getApplicationInfo().dataDir + "/databases/"; 
    }else{     
    DB_PATH = "/data/data/" + getApplicationContext().getPackageName() + "/databases/";  
    } 
    File dbpath = new File(DB_PATH); if(!dbpath.exists()){ 
    dbpath.mkdirs(); 
    } 
    dbfile = new File(DB_PATH+"dbpath"); 
    if(!dbfile.exists()){ 
    try{ 
      InputStream is = getApplicationContext().getAssets().open("dbName"); 
      int size = is.available(); 
      byte[] buffer = new byte[size]; 
      is.read(buffer); 
      is.close(); 
      FileOutputStream fos = new FileOutputStream(dbfile); 
      fos.write(buffer); 
      fos.flush(); 
      fos.close();    
     }catch(Exception e){ throw new RuntimeException(e);}; 
    } 
    db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); 
     txtBabyName1 =(TextView) findViewById(R.id.txtBabyName); 
     txtBabyName2 = (TextView) findViewById(R.id.txtMeaning); 
     txtBabyName3 = (TextView) findViewById(R.id.txtMeaningO); 
     Cursor cursor = db.rawQuery("Select * FROM tbl_Names", null); 
     TextView[] tvs = new TextView[]{txtBabyName1, txtBabyName2, txtBabyName3}; 
     int i=0; 
      if (cursor.moveToFirst()){ 
       do{ 
        tvs[i].setText(cursor.getString(1)); 
         } 
         while ((++i<3)&&(cursor.moveToNext()));  
      } 
       }else{  
        txtBabyName.setText("No data."); 
       } 
     } 
} 

ВОПРОС: как я могу показать все свои данные с помощью ListView в Android?

+0

показать свою таблицу: tbl_Names –

+0

'У меня есть два идентификатора и имя столбца.' - Если у вас есть ** 2 ** столбцы, вы можете получить доступ только к столбцу ** 0 ** и столбцу ** 1 **. Colum 2 просто ** не существует **. А также столбец 3. –

+0

Я только что отметил, что раньше. теперь проблема заключается в том, что когда я удаляю свою строку (1) ко всем 1, она отображает только одно имя, которое является Alysa. Я не знаю, как отобразить три имени. –

ответ

0

Проблема заключается в том, что вы пытаетесь заполнить свой TextView с результатом из той же строки, которая имеет только 2 столбца. Если вы действительно хотите отобразить 3 первых имени в TextView s, самым простым способом было бы создать массив ваших TextView s и назначить его членам getString (1) в цикле. Что-то вроде этого:

TextView[] tvs = new TextView[]{txtBabyName1, txtBabyName2, txtBabyName3} 
int i=0; 
if (cursor.moveToFirst()){ 
     do{ 
      tvs[i].setText(cursor.getString(1)); 
      } 
     while ((++i<3)&&(cursor.moveToNext())); 
    } 

Но я подозреваю, что у вас есть что-то другое в виду, и если вы хотите, чтобы отобразить все ваши доступные имена, вы должны смотреть в ListView и CursorAdapter.

+0

спасибо за образец кода, он просто решает мою проблему. Но вы упомянули, что для отображения всех имен переменных я должен использовать ListView, но я не знаю, как его использовать. Я просто новичок в программировании на Android специально в базе данных. –

+0

вы можете дать образец кода, как вы делали выше, спасибо –

0

возвращается как null .. проверьте ваш запрос. Также добавьте нулевую проверку на объект cursor перед его использованием.