【问题标题】:Display a SQLite colum one value after another一个接一个地显示 SQLite 列
【发布时间】:2018-01-13 19:29:54
【问题描述】:

我真的很想弄清楚这一点,但还没有找到答案或方法。

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

到目前为止我在主要 Activity 上做了什么

    @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();
    }




}

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

有什么提示或建议吗?

【问题讨论】:

标签: java android sqlite cursor android-sqlite


【解决方案1】:

在您的VoteClick 方法中执行您的getReadableDatabase,为时已晚,将此行移到onCreate 方法中。您必须在读取之前打开数据库(在questionsListView)。

mDatabaseHelper.getReadableDatabase();//move to onCreate

添加这个:

  startManagingCursor(data);
  data.moveToFirst();

行前:

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

【讨论】:

  • 应用程序因此而崩溃,android studio 在 startManaging 上拉了一行并说它已弃用
  • 不推荐使用没关系,你仍然可以使用它,这只是意味着有更好的方法(使用游标加载器),但这更难写。
  • 您意识到 for 循环将在表格中快速移动,并且 qTextView.setText 将没有时间延迟来显示所有值?你只会看到它是否在 Log.i("Counted Questions...
  • 不使用 startManagingCursor 试试看。
  • 是的,你的权利刚刚注意到,每次我点击按钮时显示 6 次(这是记录数)计数数..
【解决方案2】:

你好找到解决我问题的方法

原来我必须创建一个新的 int 变量 从第一个 id 获取它的值 并在每个按钮按下的末尾增加一个,直到我到达最后一个光标位置,我将光标移动到第一个位置

public void VoteClick(查看视图) {

  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;
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多