Каков наилучший способ оцифровки данных из sqlite для просмотра списка в Android
Я новичок в программировании Android, я надеюсь, что вы можете помочь мне. Сначала у меня есть несколько вопросов, я хочу заполнить данные из базы данных Sqlite, но я не знаю, как лучше это сделать.. Моя база данных иногда имеет много данных, и я хочу оптимизировать способ получения данных из него. Я много искал и обнаружил, что SimpleCursorAdapter хорош для моих целей, но я не мог найти способ заставить его работать.. это мой код
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_book);
ListView Peot_list = (ListView) findViewById(R.id.list_poet_name);
String SDcardPath = Environment.getExternalStorageDirectory().getPath();
String DbPath = SDcardPath + "/Tosca/" + "persian_poem.db";
try {
db = SQLiteDatabase.openDatabase(DbPath,null,SQLiteDatabase.CREATE_IF_NECESSARY);
// here you do something with your database ...
getData();
db.close();
}
catch (SQLiteException e) {
}
}
private void getData() {
TextView txtMsg;
txtMsg=(TextView) findViewById(R.id.txtmsg);
try {
// obtain a list from DB
String TABLE_NAME = "classicpoems__poet_contents";
String COLUMN_ID = "poet_id";
String COLUMN_NAME = "poet_name";
String COLUMN_CENTURY = "century_start";
String [] columns ={COLUMN_ID,COLUMN_NAME,COLUMN_CENTURY};
Cursor c = db.query(TABLE_NAME, columns,null, null, null, null, COLUMN_ID);
int theTotal = c.getCount();
Toast.makeText(this, "Total: " + theTotal, 1).show();
int idCol = c.getColumnIndex(COLUMN_ID);
int nameCol = c.getColumnIndex(COLUMN_NAME);
int centuryCol = c.getColumnIndex(COLUMN_CENTURY);
while (c.moveToNext()) {
columns[0] = Integer.toString((c.getInt(idCol)));
columns[1] = c.getString(nameCol);
columns[2] = c.getString(centuryCol);
txtMsg.append( columns[0] + " " + columns[1] + " "
+ columns[2] + "\n" );
}
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), 1).show();
}
}
Теперь я могу читать то, что я хочу, из базы данных, и они отображаются в txtMsg, но я хочу показать их в виде списка. Я вообще не могу определить SimpleCursorAdapter и всегда получаю ошибку или пустой список
1 ответ
После:
Cursor c = db.query(TABLE_NAME, columns,null, null, null, null, COLUMN_ID);
Просто создайте CursorAdapter, например SimpleCursorAdapter, с помощью этого курсора, а затем передайте адаптер в ListView. Что-то вроде:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, c,
new String[] {COLUMN_NAME,COLUMN_CENTURY}, new int[] {android.R.id.text1, android.R.id.text2}, 0);
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
(Вам не нужен какой-либо другой код ниже Cursor c = db.query(...);
.)
Внешний вид каждой строки зависит от макета, который вы используете в адаптере, в данном случае android.R.layout.simple_list_item_2
, Если вы хотите настроить отображение информации, напишите свой собственный макет.