如何在Listview

时间:2017-11-05 19:26:38

标签: android listview arraylist hashmap android-arrayadapter

编辑:我仍然坚持这个问题,所以我想出来,我需要,每次我添加一个新项目到列表,我需要阅读状态CheckBoxes和EditTexts并将它们保存在某处,然后我必须使用数据并添加一个新项目,最后再将它们放在ListView上,所以,我不知道什么是正确的方法ListView获取这些状态。有人可以帮我吗?贝娄是我之前发布过的问题。

我正在为我的餐厅开发应用程序,对于订单,我有一个带有两个复选框的列表视图,一个EditText和一个Textview,所以我有一个

ArrayList<HashMap<String,String>>

它有一个客户订单的菜单列表,所以,如果我在我的EditText中有一些文本,如果我将新项目添加到列表中,它会删除它,我知道我必须保存数据,但我不知道如何,相同使用复选框,如果我向列表中添加新项目,状态就会丢失。

这个代码: 变量:

HashMap<String,String> comandas = new HashMap<>();
    ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>();

这就是我必须将项目添加到listview

  private void mostrarOrden3(){
        JSONObject jsonObject = null;

        try {
            jsonObject = new JSONObject(JSON_STRING);
            JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY);
            //El cont se utiliza para que el primer elemento de la lista sea el mas nuevo
            int cont =result.length();
            for(int i = 0; i<result.length(); i++){

                JSONObject jo = result.getJSONObject(cont-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 = new HashMap<>();
                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);



                System.out.println(nombre);

                list.add(comandas);
                cont--;
            }


        } 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);


    }

我需要在刷新适配器时将这些项目保存在其状态中,然后再次添加项目。 这样做的正确方法是什么? 我还有另一个问题即我在ListView上使用SwiperRefreshLayout,当我滚动它时,EditText上的文本在下面的lis上重复,我来自危地马拉,所以我的例子是西班牙语,但在示例中有两个项目有数字7,我只添加了一个。 Example 1 Example 2 whit the other number 7

我非常感谢你帮助我完成这个项目。祝你有愉快的一天!

0 个答案:

没有答案