SecondActivity.javaでは、次のデータをSQLiteテーブルに読み込み、後で第3パラメータ(学校/ショッピング/レストラン)に基づいて行を読み込もうとしています。私は、アプリケーションをデバッグすると、私は同じオブジェクトの複数のコピーを取得しています。ここでandroid:readingテーブルに同じオブジェクトが複数コピーされています
DatabaseHelper db = new DatabaseHelper(this);
// Inserting default todos
Log.d("Insert: ", "Inserting ..");
db.addtodo(new Todo(1,"Wallet", "SCHOOL"));
db.addtodo(new Todo(2,"Laptop", "SCHOOL"));
db.addtodo(new Todo(3,"Phone", "SCHOOL"));
db.addtodo(new Todo(4,"Laptop Charger", "SCHOOL"));
db.addtodo(new Todo(5,"Phone Charger", "SCHOOL"));
db.addtodo(new Todo(6,"USB", "SCHOOL"));
db.addtodo(new Todo(8,"Wallet", "SHOPPING"));
db.addtodo(new Todo(9,"Phone", "SHOPPING"));
db.addtodo(new Todo(10,"Coupons", "SHOPPING"));
db.addtodo(new Todo(11,"Shopping List", "SHOPPING"));
db.addtodo(new Todo(12,"Wallet", "RESTAURANT"));
db.addtodo(new Todo(13,"Phone", "RESTAURANT"));
db.addtodo(new Todo(14,"Gift Cards", "RESTAURANT"));
Log.d("Reading: ", "Reading all contacts..");
ArrayList<Todo> tags_school = db.getAllTodo("SCHOOL");
ArrayList<Todo> tags_restaurant = db.getAllTodo("RESTAURANT");
ArrayList<Todo> tags_shopping = db.getAllTodo("SHOPPING");
// Construct the data source
ArrayList<Todo> todolist = new ArrayList<Todo>();
switch (message){
case "SCHOOL":{
todolist = tags_school;
break;
}
case "SHOPPING":{
todolist = tags_shopping;
break;
}
case "RESTAURANT":{
todolist = tags_restaurant;
break;
}
case "CUSTOM":{
break;}
}
// Create the adapter to convert the array to views
TodoAdapter adapter = new TodoAdapter(this, todolist);
// Attach the adapter to a ListView
ListView listView = (ListView) findViewById(R.id.lvItems);
listView.setAdapter(adapter)
} 私DatabaseHelper.java
public ArrayList<Todo> getAllTodo(String tag) {
ArrayList<Todo> noteList = new ArrayList<Todo>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_NOTES + " WHERE " + KEY_TAG + "='"+tag+"';";
SQLiteDatabase db = this.getWritableDatabase();
//I THINK THE QUERY IS GETTING MULTIPLE TIMES
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
// looping through all rows and adding to list
while (!cursor.isAfterLast()) {
Todo todo = new Todo();
todo.set_id(Integer.parseInt(cursor.getString(0)));
todo.setNote(cursor.getString(1));
todo.setTag(cursor.getString(2));
// Adding contact to list
noteList.add(todo);
cursor.moveToNext();
}
// return contact list
return noteList;
}
にこれらがtags_schoolの内容がそうする機能です。 Here is the first pic Here is the 2nd pic 私は6つのオブジェクトだけを読みますが、121を読みます。この番号はコードを実行するたびに変わります。とても混乱するような。どこが間違っているのか分かりません。
アプリを複数回実行すると、dbに同じエントリが追加されている可能性があります。アプリデータをクリアして確認します。 –