Java代码不断将列表中的旧元素重写为新元素

Java代码不断将列表中的旧元素重写为新元素,java,android,Java,Android,我这里的代码有问题 我有一个来自json文件的配方对象列表,但每当我尝试放入一个新的配方对象时,它都会将以前的所有对象放入这个新对象中。这意味着我将有一个相同配方的8个(或其他)列表,即json文件中的最后一个对象 有人知道我做错了什么吗 希望我提供了足够的资料 private void fillItemsDB(String filename) { try { BufferedReader reader = new BufferedReader(n

我这里的代码有问题

我有一个来自json文件的配方对象列表,但每当我尝试放入一个新的配方对象时,它都会将以前的所有对象放入这个新对象中。这意味着我将有一个相同配方的8个(或其他)列表,即json文件中的最后一个对象

有人知道我做错了什么吗

希望我提供了足够的资料

    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()。这些方法会发生什么?它们触发了什么?这些是来自可观察类的方法。我明白了,但它们会触发什么?我可以想象这就是你代码中的缺陷。因为在循环之后你会再次调用它们。只给他们打电话就够了吗?