Я пытаюсь переместить и отобразить следующий результат запроса, примеры, которые я видел, относятся к вещам вроде count = 1 или получить все записи, но не могут понять, как они .Следующие и предыдущие кнопки затем отображают запись 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, способный вообще работать.
Любая помощь или примеры были бы очень оценены.
[EDIT]
@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 Как остановить цикл? Я пробовал перерыв и возврат, но не работал. –
Просто не петля. –
Я добавил ответ. Смотрите, помогает ли это вам. –