添加新项目时重复ListView项目

时间:2016-06-28 20:27:25

标签: android repeat simpleadapter

每当我在 ListView 中添加新项目时,只会重复显示最后一项

 final ArrayList<Map<String, String>> persontList = new ArrayList <Map<String, String>>();

    ajout.setOnClickListener(new View.OnClickListener(){

         Map<String, String> data;

        public void onClick(View v) {
            String nom = etname.getText().toString();
            String number = etnumber.getText().toString();
            Person p =new Person(nom, number);
            String strNumber = String.valueOf(p.getPhoneNumber());
            data =  new HashMap<String, String>(2);
            data.put("FullName",p.getFullName());
            data.put("PhoneNumber",strNumber);

            persontList.add(data);
            SimpleAdapter arrayAdapter = new SimpleAdapter(MainActivity.this, persontList, android.R.layout.simple_list_item_2, new String[]{"FullName", "PhoneNumber"}, new int[]{android.R.id.text1, android.R.id.text2});
            lvStudent.setAdapter(arrayAdapter);

        }
    });

我看到了这个current version,但它似乎不适合我

3 个答案:

答案 0 :(得分:0)

我不确定它是否与您的问题直接相关,但您不应该这样做:

SimpleAdapter arrayAdapter = new SimpleAdapter(MainActivity.this, persontList, android.R.layout.simple_list_item_2, new String[]{"FullName", "PhoneNumber"}, new int[]{android.R.id.text1, android.R.id.text2});
lvStudent.setAdapter(arrayAdapter);

这不是强制性的,但可能您不希望每次单击View时都创建一个简单的适配器。

尝试从此回调中创建适配器。

答案 1 :(得分:0)

我认为这是因为每次点击“ajout”时都会创建一个SimpleAdapter。

您只需将列表中的项添加到您在单击事件之前创建的适配器。

例如:

final ArrayList<Map<String, String>> persontList = new ArrayList <Map<String, String>>();
SimpleAdapter arrayAdapter = new SimpleAdapter(MainActivity.this, persontList, android.R.layout.simple_list_item_2, new String[]{"FullName", "PhoneNumber"}, new int[]{android.R.id.text1, android.R.id.text2});

    ajout.setOnClickListener(new View.OnClickListener(){

         Map<String, String> data;

        public void onClick(View v) {
            String nom = etname.getText().toString();
            String number = etnumber.getText().toString();
            Person p =new Person(nom, number);
            String strNumber = String.valueOf(p.getPhoneNumber());
            data =  new HashMap<String, String>(2);
            data.put("FullName",p.getFullName());
            data.put("PhoneNumber",strNumber);

            persontList.add(data);
            arrayAdapter = new SimpleAdapter(MainActivity.this, persontList, android.R.layout.simple_list_item_2, new String[]{nom, number}, new int[]{android.R.id.text1, android.R.id.text2});

            lvStudent.setAdapter(arrayAdapter);
            arrayAdapter.notifyDataSetChanged();
        }


        lvStudent.setAdapter(arrayAdapter);
    });

答案 2 :(得分:0)

personlist.clear();

之前添加String nom = etname.getText().toString();