Java 如何在SQLite中循环一次光标,关闭并移动到下一行而不再次显示第一行
我试图循环一个arrayList,但问题是每次它循环时,第一个循环只显示一个元素,第二个循环显示前一个元素和一个新元素,循环继续,我想一次只显示一个元素,我是这样做的: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>
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();
}