Java 如何在SQLite中循环一次光标,关闭并移动到下一行而不再次显示第一行

Java 如何在SQLite中循环一次光标,关闭并移动到下一行而不再次显示第一行,java,android,sqlite,arraylist,android-sqlite,Java,Android,Sqlite,Arraylist,Android Sqlite,我试图循环一个arrayList,但问题是每次它循环时,第一个循环只显示一个元素,第二个循环显示前一个元素和一个新元素,循环继续,我想一次只显示一个元素,我是这样做的: private void checkDB() { Cursor data = mDatabaseHelper.getData(); ArrayList<String> list1 = new ArrayList<String>(); ArrayList<String>

我试图循环一个arrayList,但问题是每次它循环时,第一个循环只显示一个元素,第二个循环显示前一个元素和一个新元素,循环继续,我想一次只显示一个元素,我是这样做的:

private void checkDB() {
    Cursor data = mDatabaseHelper.getData();
    ArrayList<String> list1 = new ArrayList<String>();
    ArrayList<String> list2 = new ArrayList<String>();
    ArrayList<String> list3 = new ArrayList<String>();
    ArrayList<String> list4 = new ArrayList<String>();

    if (data.getCount() == 0) {
        Toast.makeText(context, "No Data", Toast.LENGTH_SHORT).show();
    }
    while (data.moveToNext()) {
        list1.add(data.getString(1));
        list1.add(data.getString(2));
        list1.add(data.getString(3));
        list1.add(data.getString(4));
        Log.e(TAG, "checkDB1: " + list1);
    }
}
每次循环时,它也会显示上一个,我尝试只打印一个数据而不是上一个,我尝试了堆栈中的几个解决方案,但仍然是一样的。我尝试过的其他方法:

for (data.moveToNext(); data.isAfterLast(); data.moveToNext()) {
    list1.add(data.getString(1));
    list1.add(data.getString(2));
    list1.add(data.getString(3));
    list1.add(data.getString(4));
    Log.e(TAG, "checkDB1: " + list1);
}

您只需在
while
循环的每次迭代结束时清除列表:

while (data.moveToNext()) {
    list1.add(data.getString(1));
    list1.add(data.getString(2));
    list1.add(data.getString(3));
    list1.add(data.getString(4));
    Log.e(TAG, "checkDB1: "+list1);
    list1.clear();
}
while (data.moveToNext()) {
    list1.add(data.getString(1));
    list1.add(data.getString(2));
    list1.add(data.getString(3));
    list1.add(data.getString(4));
    Log.e(TAG, "checkDB1: "+list1);
    list1.clear();
}