在列表视图中显示重复的项目,SQlite添加“true”?

时间:2017-07-14 00:10:50

标签: android sqlite listview android-studio android-sqlite

因此,我正在通过将SQLite数据库同步到Firebase数据库来实现这一目标。

我不明白我的代码中发生了什么:P

数据已成功添加到SQLite中,因为我记录了整个过程,我知道它只添加了一次,我也将Text设置为UNIQUE 当我想在ListView中显示它时, 它显示每个重复的条目,如下所示:

ListView Picture

因此,在我的日志中,当“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);

1 个答案:

答案 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");作为第二行。