一个接一个地显示 SQLite 列



我真的很努力解决这个问题,但没有找到答案或方法。

我正在尝试做的是将保存在SQLite列中的问题一个接一个地显示在TextView中,直到它们完成。

到目前为止,我在主要活动上做了什么

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDatabaseHelper = new DatabaseHelper(this);
btn1star = (Button) findViewById(R.id.btn1star);
btn2star = (Button) findViewById(R.id.btn2star);
btn3star = (Button) findViewById(R.id.btn3star);
mListview = (ListView) findViewById(R.id.qlistview);
qTextView = (TextView) findViewById(R.id.qTextView);

questionsListView();
}
private void questionsListView() {
Cursor data = mDatabaseHelper.getData();
data.moveToFirst();
qTextView.setText(data.getString(1));
}

public void VoteClick(View view){
mDatabaseHelper.getReadableDatabase();
Cursor data = mDatabaseHelper.getData();
if (data.getCount() >=1){

for (int i = 0; i< data.getCount(); i++) {
data.moveToNext();
Log.i("Counted Questions are: ", String.valueOf(data.getCount()));
qTextView.setText(data.getString(1));
}

}
}

private void toastmessage (String message){
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}


}

我能够显示第一个问题,当我单击最后一个问题按钮时,我无法显示两者之间的问题

有什么提示或建议吗?

在你的VoteClick方法中,你做你的getReadableDatabase,这太晚了,把这一行移到onCreate方法中。必须先打开数据库,然后才能从中读取数据(以questionsListView为单位(。

mDatabaseHelper.getReadableDatabase();//move to onCreate

添加这个:

startManagingCursor(data);
data.moveToFirst();

行前:

if (data.getCount() >=1){

您好找到了我的问题的解决方案

事实证明,我必须创建一个新的 int 变量 从第一个 id 获取其值 并在每次按钮按下结束时将其增加一个,直到我到达最后一个光标位置,我将光标移动到第一个位置

公共无效 投票点击(查看视图( {

Cursor data = mDatabaseHelper.getData();
data.moveToPosition(q);
data.moveToNext();
qTextView.setText(data.getString(1));
while (data.isLast()) {
data.moveToFirst();
q = data.getPosition();
}
q = q+1;
}

最新更新