[更新]如何在android listview中显示您的数据

时间:2014-11-15 08:14:34

标签: android sqlite listview sqlitestudio

我使用SQLiteStudio(v2.1.5)获取数据库中的数据(dbName),我有1个表(tbl_Names)并放入android。现在在我的数据库中,我有一个两列id和名称。在我的数据库(dbName)中,我输入了三个名称(Abbygail,Andie和Alysa等)。我只能在TextView中显示它。

这是我的全部代码:

  

String 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.");   
              }  
         }
}

问题: 如何使用Android中的ListView显示我的所有数据?

2 个答案:

答案 0 :(得分:0)


cursor返回null。检查您的查询。在使用之前,还要对cursor对象添加空检查。

答案 1 :(得分:0)

问题是您是否尝试使用同一行(只有2列)填充TextView s的结果。如果您真正想要的是在TextView中显示3个名字,最简单的方法是创建TextView的数组,并为其分配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())); 
  }

但我怀疑你有不同的想法,如果你想显示所有可用的名字,你应该查看ListViewCursorAdapter