每当我在 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,但它似乎不适合我
答案 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();