我使用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显示我的所有数据?
答案 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()));
}
但我怀疑你有不同的想法,如果你想显示所有可用的名字,你应该查看ListView
和CursorAdapter
。