从SQLite数据库获取数据并在recyclerview中显示

问题描述 投票:1回答:1

我试图从SQLite DB获取数据,其中我成功地向其添加数据。我使用databaseHelper类添加数据和应用程序可能需要的任何其他查询。作为参考,这是类如何看起来像DataBaseHelper 。 这是我的帮助器中的getData方法的样子:

public Cursor getBasicWorkoutInfo(){

    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT "+COL2 +", "+COL3+", "+COL4 +" FROM " + TABLE_NAME;
    Cursor data = db.rawQuery(query, null);
    return data;

}

"COL"只是数据库中字段名称的字符串标记。 recyclerView使用我创建的类锻炼的arrayList这是它看起来像

public class Workout {

public String workoutName;
public String numberOfSets;
public String restBetweenSets;

}

在活动的onCreate方法中,我提出了一种处理从数据库获取数据的方法,但在测试之后,应用程序崩溃并且调试控制台在while循环的第三行显示错误。

 Cursor data=mDatabaseHelper.getBasicWorkoutInfo();

    Workout work=new Workout();


    while(data.moveToNext()){


        work.workoutName=data.getString(1);
        work.numberOfSets= String.valueOf(data.getInt(2));
        work.restBetweenSets=data.getString(3);


    }

    sampleWorkout.add(work);



    if (sampleWorkout.isEmpty()){

        createTextView.setVisibility(View.VISIBLE);

    }else {

    workoutRecyclerView=(RecyclerView) findViewById(R.id.myWorkoutsRecyclerView);
    linearLayoutManager = new LinearLayoutManager(this);
    DividerItemDecoration itemDecoration = new DividerItemDecoration(this, linearLayoutManager.getOrientation());
    workoutRecyclerView.setLayoutManager(linearLayoutManager);
    workoutRecyclerView.addItemDecoration(itemDecoration);
    workoutRecyclerView.setHasFixedSize(true);
    mWorkAdapter = new WorkoutsRecyclerAdapter(sampleWorkout, getBaseContext());
    workoutRecyclerView.setAdapter(mWorkAdapter);


    }

可能是循环中的问题,我该如何解决这个问题,以便能够有效地将数据添加到recyclerView

java android sqlite android-sqlite
1个回答
0
投票

试试这个

由于列索引在查询中以0开头

改成 :

    work.workoutName=data.getString(0);
    work.numberOfSets= String.valueOf(data.getInt(1));
    work.restBetweenSets=data.getString(2);

代替

    work.workoutName=data.getString(1);
    work.numberOfSets= String.valueOf(data.getInt(2));
    work.restBetweenSets=data.getString(3);

这是解决方案datatypes使用您的表数据类型

© www.soinside.com 2019 - 2024. All rights reserved.