ArrayList的<散列映射<字符串,字符串>&GT;覆盖列表中的项目

时间:2017-10-27 05:01:45

标签: android arraylist hashmap

我在使用我的ArrayList时遇到了一些麻烦,我正在为我的餐馆开发一个应用程序,我得到了带有我的菜肴的AutoCompleteTextView,当我选择其中一个它放入列表并显示带有适配器时,问题显示我尝试将另一道菜放入我的订单清单,我来自危地马拉,所以我的例子将是西班牙语,例如我添加一个名为“Hamburguesa de pollo”的菜,它正确地添加到te ArrayList,但是当我添加一个名为Dish的菜时“Ravioles”它删除了“Hamburguesa de pollo”,并向我展示了两个像这样说“Ravioles”的项目。

Problem 如果我添加更多项目,则las会删除旧项目并在整个列表中显示相同内容。

这是我在onCreate方法

上面的声明
ArrayList<HashMap<String,String>> list = new ArrayList<>();

这是AutoCompleteTexView的监听器

textViewPlatos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                textPlatos=textViewPlatos.getText().toString();
                getJSON3();

                textViewPlatos.setText("");

            }
        });

这适用于AsyncTask并转到此方法,该方法执行查询以获取de数据,然后将该项添加到列表中,并显示到te适配器。

private void mostrarOrden3(){
        JSONObject jsonObject = null;

        try {
            jsonObject = new JSONObject(JSON_STRING);
            JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY);



                JSONObject jo = result.getJSONObject(result.length()-1);
                String id = jo.getString(Config.TAG_ID_PLATOS);
                String nombre = jo.getString(Config.TAG_NOMBRE_PLATOS);
                String precio = jo.getString(Config.TAG_PRECIO_PLATOS);
                String descripcion = jo.getString(Config.TAG_DESCRIPCION_PLATOS);
                String nombrecategoria = jo.getString(Config.TAG_NOMBRECATEGORIA_PLATOS);



                comandas.put(Config.TAG_ID_PLATOS,id);
                comandas.put(Config.TAG_NOMBRE_PLATOS,nombre);
                comandas.put(Config.TAG_PRECIO_PLATOS,precio);
                comandas.put(Config.TAG_DESCRIPCION_PLATOS,descripcion);
                comandas.put(Config.TAG_NOMBRECATEGORIA_PLATOS,nombrecategoria);



                list.add(comandas);

          //  }


        } catch (JSONException e) {
            e.printStackTrace();
        }

        ListAdapter adapter = new SimpleAdapter(

                NuevaOrdenActivity.this, list, R.layout.list_item_platos,
                new String[]{Config.TAG_NOMBRE_PLATOS},
                new int[]{ R.id.name});

        listView.setAdapter(adapter);


    }

我真的不知道代码何时擦除名称并用新项替换所有名称。我做了一个调试,列表中的项目真的被覆盖了,一遍又一遍,到最后它有一个相同的最后项目列表,对不起我的英语,并感谢帮助我。

0 个答案:

没有答案