2017-07-14 8 views
0

私は現在、SQLiteデータベースとFirebaseデータベースを同期させる方法を模索しています。私のコードで起こっていただきました!私は本当に理解していないwherポイントへリストビューに重複して表示される項目は、SQliteに「true」が追加されますか?

ガット:P

データが正常にSQLiteのに追加され、私はこの全体のプロセスをログに記録するので、私はまた、それは一度だけ追加されます知っています私がリストビューに表示したい場合はUNIQUE にテキストを設定し、 はそれがすべてのこのような重複したエントリ、表示されます。私のログでそう

ListView Picture

を、それが「いつ「配列に真の追加」と言いますtrue "は、Drawing and Paintingのような特定の名前でなければならないが、とにかく絵画と絵画。混乱している! 私は、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

'Log.d ...'行から 'sublistData.add(data.getString(0))'を削除してみてください.1行目の値を取得するのではなく、 。 – MikeT

+0

OMG!手伝ってくれてありがとうございました!...物事をコピー&ペーストして12時間働かせるとどうなりますか? –

答えて

1

あなたの問題は、次のコード行である: -

 sublistData.add(data.getString(0)); 
     Log.d(TAG, "ADDING " + sublistData.add(data.getString(0)) + " to ARRAY"); 

最初の行は、データに要素を追加し、正しいです。ただし、2行目の行を1行目で繰り返すことで、2番目の要素が同じ値の配列に追加されます。したがって、ループ2の反復ごとに、エントリが追加されます。

修正はsublistData.add(data.getString(0))を使用して繰り返されません。 2行目にはおそらくLog.d(TAG, "ADDING " + data.getString(0) + " to ARRAY");を使用してください。

関連する問題