我有一个EditText
框,因此用户可以输入名称,然后点击添加按钮,名称将保存到数组playerList
并清除该框以便另一个名称可以添加。
我在同一个活动中也有一个ListView
,然后会被Array
playerList
中的名称填充。问题是ListView
似乎没有填充。
所以我尝试使用defualt set String teststring
,您可以在下面看到并填充ListView
罚款。我的问题是如何使用Array
playerList
并不能正确保存到Array
?
更新只需添加adapter.notifyDataSetChanged();
即可刷新ListView
来自@Lalit Poptani和@Jave 的信用
ArrayList<String> playerList = new ArrayList<String>();
ListView listview;
protected String[] teststring = {"Name 1", "Name 2"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.addremove);
ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, teststring);
ListView employeeList = (ListView) findViewById(R.id.namelistview);
employeeList.setAdapter(adapter);
Button confirm = (Button) findViewById(R.id.add);
confirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText playername = (EditText) findViewById(R.id.userinput);
String name = playername.getText().toString();
playerList.add(name);
playername.setText("");
}});
答案 0 :(得分:3)
要在向其添加新数据后刷新ListView,您必须调用adapter.notifyDataSetChanged()
。这是刷新ListView将新数据。
但是在你的情况下,你用String []填充你的ListView,所以它不会动态地工作,你必须给出String[]
的大小。因此,我建议您使用ArrayList
填充ListView以动态添加内容。
ListAdapter adapter = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1,playerList);
答案 1 :(得分:2)
添加新项目后,您应该致电adapter.notifyDataSetChanged()
,以便使用新数据进行更新。
通知附加的观察者基础数据已经存在 已更改,任何反映数据集的视图都应自行刷新。