【问题标题】:ListView item repeating when adding new item添加新项目时ListView项目重复
【发布时间】:2016-06-28 20:27:24
【问题描述】:

每当我在 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);

        }
    });

我看到了这个android ListView Simple Adapter, item repeating,但它似乎对我不起作用

【问题讨论】:

  • 你找到解决办法了吗?

标签: android repeat simpleadapter


【解决方案1】:

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

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

这不是强制性的,但您可能不想在每次单击视图时都创建一个简单的适配器。

尝试使用此回调创建您的适配器。

【讨论】:

    【解决方案2】:

    我认为这是因为您每次点击“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);
        });
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 1970-01-01
        • 2016-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多