При запросе из БД в TextViev (text1) текста вопроса нужно после ответа в EditText вывести следующую рандомную строку вопроса, при этом учитывая количество правильных и неправильных ответов через числовые переменные ( "а" и "х"). Написал следующий код. Почему то после ответа не загружает текст следующего вопроса(в rawQuery product - это текст вопроса, а gono - правильный ответ,хранящийся в БД,который сравниваем с введенным значением через OnKeyListener). Подскажите,пожалуйста,где оступился.
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
//Объявим переменные компонентов
EditText editText;
TextView text1;
private DatabaseHelper mDBHelper;
private SQLiteDatabase mDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDBHelper = new DatabaseHelper(this);
try {
mDBHelper.updateDataBase();
} catch (IOException mIOException) {
throw new Error("UnableToUpdateDatabase");
}
try {
mDb = mDBHelper.getWritableDatabase();
} catch (SQLException mSQLException) {
throw mSQLException;
}
//Найдем компоненты в XML разметке
text1 = (TextView) findViewById(R.id.text1);
editText = findViewById(R.id.editText);
final int[] a = {0};
final int[] x = {0};
do {
String product = "";
String gono = "";
final Cursor cursor = mDb.rawQuery("SELECT * FROM " + "book1" + " ORDER BY RANDOM() LIMIT 1", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
product += cursor.getString(1);
gono += cursor.getString(2);
cursor.moveToNext();
}
cursor.close();
text1.setText(product);
final String finalGono = gono;
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
if (editText.getText().toString().equals(finalGono))
a[0]++;
else
x[0]++
}
return false;
}
});
} while (a[0] > 2*x[0]);
}
}