首页 > 解决方案 > 如何从 SQLite 检索数据到 EditText 屏幕并使用 onClick 事件滚动

问题描述

我正在构建一个应用程序,它使用 SQLite 数据库中的游标对象检索数据并将每一行填充到屏幕上的 EditText。单击按钮,下一行数据应粘贴到 EditText 屏幕。基本上每个按钮单击事件都会滚动到下一行数据并粘贴到屏幕上的编辑文本。我的代码确实从 SQLite 检索数据并将第一行数据粘贴到屏幕上。但是,当我按下按钮加载下一行数据时没有响应。

 public void viewStockMaterialDataToScreen(){
        final Cursor cursor = controller.getAllStockMaterialData();
        if (cursor.getCount() == 0) {
            Toast.makeText(DataEntry_DailyStockTake.this, "No data exists in the database", Toast.LENGTH_SHORT).show();
            return;
        }
        if (cursor.moveToFirst()) {
                StockMaterial.setText(cursor.getString(1));
                UnitOM_Str.setText(cursor.getString(2));
                UnitOM_Ava.setText(cursor.getString(3));
                MinimumOQ.setText(cursor.getString(6));
        }
                button_Move_next.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                                           while (cursor.moveToNext()){}

                    }

       });
   }

标签: androidandroid-edittextcursorandroid-sqliteonclicklistener

解决方案


我相信你有两个问题。

  1. 当您移动到下一行时,您没有设置文本,因此显示的数据不会改变。
  2. 当您单击而不是仅仅移动到下一行时,您正在遍历整个光标并最终到达 AfterLastRow 位置。

所以你似乎想要这样的东西: -

            button_Move_next.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    if (cursor.moveToNext()) {
                        StockMaterial.setText(cursor.getString(1));
                        UnitOM_Str.setText(cursor.getString(2));
                        UnitOM_Ava.setText(cursor.getString(3));
                        MinimumOQ.setText(cursor.getString(6));
                    }
                }
            }

推荐阅读