因此,我正在通过将SQLite数据库同步到Firebase数据库来实现这一目标。
我不明白我的代码中发生了什么:P
数据已成功添加到SQLite中,因为我记录了整个过程,我知道它只添加了一次,我也将Text设置为UNIQUE 当我想在ListView中显示它时, 它显示每个重复的条目,如下所示:
因此,在我的日志中,当“true”应该是一个特定的名称(如绘图和绘画)时,它会说“向数组添加true”,但无论如何都会显示绘图和绘图。混乱! 我甚至尝试使用阻止ArrayList重复发送的异常处理这个......
非常感谢任何帮助! :)
selectedName = getIntent().getStringExtra("name");
// get data and append to a list
Cursor data = databaseHelper.getFirstSubData(selectedName);
//----------------Snipped of DatabseHelper--------------//
public Cursor getFirstSubData(String mainCat){
// SELECT SubCats FROM first_sub_table WHERE 'mainCat' = main cat
SQLiteDatabase database = this.getWritableDatabase();
String query1 = "SELECT " + FIRST_SUB_COL3 + " FROM " + COURSES_FIRST_SUB_TABLE
+ " WHERE " + FIRST_SUB_COL2 + " = '" + mainCat + "'";
Log.d(TAG, "SELECT " + FIRST_SUB_COL3 + " FROM " + COURSES_FIRST_SUB_TABLE
+ " WHERE " + FIRST_SUB_COL2 + " = '" + mainCat + "'");
Cursor data = database.rawQuery(query1, null);
return data;
}
// ---------------------End of snippet------------------//
ArrayList<String> sublistData = new ArrayList<>();
Log.d(TAG, "Cursor is on Position: " + data.getPosition());
while (data.moveToNext()) {
Log.d(TAG, "Inside the while loop");
Log.d(TAG, "Cursor is on Position: " + data.getPosition());
// get the value from the database in column 0 then add it to the array list
sublistData.add(data.getString(0));
Log.d(TAG, "ADDING " + sublistData.add(data.getString(0)) + " to ARRAY");
}
String size = Integer.toString(sublistData.size());
Log.d(TAG, "SIZE OF ARRAY IN SUB CAT IS " + size);
final ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, sublistData);
lvSubItems.setAdapter(adapter);
答案 0 :(得分:1)
您的问题出在以下几行代码中: -
sublistData.add(data.getString(0));
Log.d(TAG, "ADDING " + sublistData.add(data.getString(0)) + " to ARRAY");
第一行添加了一个包含数据的元素,并且是正确的。但是,通过重复第一行的第二行将第二个元素添加到具有相同值的数组。因此,对于循环的每次迭代,都会添加两个条目。
修复不使用sublistData.add(data.getString(0))
重复。您应该使用Log.d(TAG, "ADDING " + data.getString(0) + " to ARRAY");
作为第二行。