我想要移動到並顯示下一個查詢結果,我見過的示例引用count = 1或獲取所有記錄,但無法計算出它們如何被執行。Next和Previous按鈕然後顯示記錄SQLite Android
我能夠顯示第一個記錄罰款,但是當試圖moveToNext
我最後的結果,moveToPrev
什麼都不做。 (我猜這與計數變量做我讀過有關)
DBHelper.Java
public Cursor PL_get_Record(String pldescription, SQLiteDatabase sqlitedatabase) {
String selection = PLDESCRIPTION + " LIKE ?";
String[] selection_args = {
"%" + pldescription + "%"
};
Cursor c = sqlitedatabase.query(PLTABLE_NAME, PL_All_Cols, selection, selection_args, null, null, null);
return c;
}
MainActivity.Java - 使用MoveToNext按鈕
public void btn_ParamNext(View view) {
dbhelper = new DbHelper(getApplicationContext());
sqlitedatabase = dbhelper.getReadableDatabase();
Cursor c = dbhelper.get_Record(Desc, sqlitedatabase);
while (c.moveToNext()) {
DisplayData(c);
}
c.close();
}
MainActivity.Java - MoveToPrevious按鈕
public void ParamPrev(View view) {
dbhelper = new DbHelper(getApplicationContext());
sqlitedatabase = dbhelper.getReadableDatabase();
Cursor c = dbhelper.get_Record(Desc, sqlitedatabase);
while (c.moveToPrevious()) {
DisplayData(c);
}
c.close();
}
我所看到的是指RawQuery,我已經被炎熱的其他例子能夠開始工作。
任何幫助或例子將不勝感激。
[編輯]
@Frank,感謝您的回覆。我嘗試了你的建議,但我顯然沒有正確理解,現在我的代碼如下。
DbHelper.java
public Cursor PL_get_Record (String pldescription, SQLiteDatabase sqlitedatabase) {
String selection = PLDESCRIPTION+" LIKE ?";
String [] selection_args = {"%"+pldescription+"%"};
Cursor cursor = sqlitedatabase.query(PLTABLE_NAME, PL_All_Cols, selection, selection_args, null, null, null);
return cursor; }
OnClickListener與btnFirstRec,btnNext & btnPrev按鈕
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnFirstRec:
dbhelper = new DbHelper(getApplicationContext());
sqlitedatabase = dbhelper.getReadableDatabase();
Cursor c = dbhelper.PL_get_Record(Desc, sqlitedatabase);
if (c != null) {
c.moveToFirst();
DisplayData(c);
}
break;
case R.id.btnNext:
if (c != null && !c.isAfterLast()) {
c.moveToNext();
DisplayData(c);
}
break;
case R.id.btnPrev:
if (c != null && !c.isBeforeFirst()) {
c.moveToPrevious();
DisplayData(c);
}
break;
}
}
};
現在我得到一個錯誤 Variable c might not have been initialized
如果我改變btnNext和btnPrev到
dbhelper = new DbHelper(getApplicationContext());
sqlitedatabase = dbhelper.getReadableDatabase();
Cursor c = dbhelper.PL_get_Record(Desc, sqlitedatabase);
if (c != null && !c.isAfterLast()) {
c.moveToNext();
DisplayData(c);
}
break;
我結束了
variable c is already defined in method onClick(View)
不知道還有什麼嘗試,請大家幫忙。
@Frank N. Stein 如何停止循環? 我已經嘗試過休息並返回,但都沒有工作。 –
只是不要循環。 –
我加了一個答案。看看它是否可以幫助你。 –