[英]ListView Repeating Last Entry
我用自定義適配器制作了一個listView,它從數據庫獲取數據並將其綁定到列表視圖,適配器很好地選擇了記錄數,但是它一直顯示所有條目的最后一條記錄,例如,如果從數據庫中檢索到5條記錄,則列表視圖將顯示五次最近的記錄。
這是代碼
Activities SetAct = new Activities();
final ArrayList<Activities> sData = new ArrayList<Activities>();
try{
SQLiteDatabase db = openOrCreateDatabase("iTimeDB", MODE_PRIVATE, null);
Cursor c2 = db.rawQuery("SELECT * FROM Activities", null); // WHERE ID = '" +ID+"'"
for (c2.moveToFirst(); !c2.isAfterLast(); c2.moveToNext()) {
String title =c2.getString(c2.getColumnIndex("Title"));
String details =c2.getString(c2.getColumnIndex("Details"));
String time =c2.getString(c2.getColumnIndex("Time"));
String ref= c2.getString(c2.getColumnIndex("Ref"));
String matter =c2.getString(c2.getColumnIndex("Matter"));
String date = c2.getString(c2.getColumnIndex("Date"));
String ID = c2.getString(c2.getColumnIndex("ID"));
String IMEI1 = c2.getString(c2.getColumnIndex("IMEI"));
SetAct.setTitle(title);
SetAct.setDetails(details);
SetAct.setMatter(matter);
SetAct.setRef(ref);
SetAct.setTime(time);
SetAct.setDate(date);
SetAct.setID(ID);
sData.add(SetAct);
}
c2.close();
db.close();
}
catch(Exception e){
e.printStackTrace();
Log.v("YYY", e.toString());
}
final ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(new CustomListAdapter(this, sData));
下面一行從外部for循環中取出 里面 添加它的循環
Activities SetAct = new Activities();
例
for (c2.moveToFirst(); !c2.isAfterLast(); c2.moveToNext()) {
Activities SetAct = new Activities();
String title =c2.getString(c2.getColumnIndex("Title"));
// Remaining as it is..
}
這樣使用。
我使用以下模式讀取查詢結果。
SQLiteDatabase db = new DbHelper().getWritableDatabase();
String sql = "SELECT ...";
String[] args = ...;
Cursor cs = db.rawQuery(sql, args);
while (cs.moveToNext()) {
// cs.getXxx(0), cs.getXxx(1)
}
cs.close();
db.close();
DbHelper是我從SQLiteOpenHelper擴展的類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.