Java代码不断将列表中的旧元素重写为新元素
我这里的代码有问题 我有一个来自json文件的配方对象列表,但每当我尝试放入一个新的配方对象时,它都会将以前的所有对象放入这个新对象中。这意味着我将有一个相同配方的8个(或其他)列表,即json文件中的最后一个对象 有人知道我做错了什么吗 希望我提供了足够的资料Java代码不断将列表中的旧元素重写为新元素,java,android,Java,Android,我这里的代码有问题 我有一个来自json文件的配方对象列表,但每当我尝试放入一个新的配方对象时,它都会将以前的所有对象放入这个新对象中。这意味着我将有一个相同配方的8个(或其他)列表,即json文件中的最后一个对象 有人知道我做错了什么吗 希望我提供了足够的资料 private void fillItemsDB(String filename) { try { BufferedReader reader = new BufferedReader(n
private void fillItemsDB(String filename) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(sContext.getAssets().open(filename)));
String jsonString = reader.readLine();
JSONArray recipeA = new JSONArray(jsonString);
for (int i = 0; i < recipeA.length(); i++) {
RecipeItem ri = new RecipeItem();
String rName = recipeA.getJSONObject(i).getString("gname");
String rGuide = recipeA.getJSONObject(i).getString("gguide");
ri.setRecipeName(rName);
ri.setRecipeGuide(rGuide);
list.add(ri); //arraylist
addRecipe(ri);
}
} catch (JSONException je) {
Log.e(TAG, "Failed to parse JSON", je);
} catch (IOException e) {
Log.e(TAG, "Failed to read file", e);
}
this.setChanged();
notifyObservers();
}
public void addRecipe(RecipeItem recipeItem) {
ContentValues values = getContentValues(recipeItem);
mDatabase.insert(RecipeDbSchema.ItemTable.NAME, null, values);
this.setChanged();
notifyObservers();
}
private static ContentValues getContentValues(RecipeItem recipe) {
ContentValues values = new ContentValues();
values.put(RecipeDbSchema.ItemTable.Cols.RecipeName, recipe.getRecipeName());
values.put(RecipeDbSchema.ItemTable.Cols.RecipeGuide, recipe.getRecipeGuide());
return values;
}
private void fillItemsDB(字符串文件名){
试一试{
BufferedReader=新的BufferedReader(新的InputStreamReader(sContext.getAssets().open(filename));
字符串jsonString=reader.readLine();
JSONArray recipeA=新的JSONArray(jsonString);
对于(int i=0;i
使用您调用的每个循环addRecipe(ri)
并通过这样做this.setChanged()代码>和notifyobserver()代码>。这些方法会发生什么?它们触发了什么?这些是来自可观察类的方法。我明白了,但它们会触发什么?我可以想象这就是你代码中的缺陷。因为在循环之后你会再次调用它们。只给他们打电话就够了吗?