使用动态数组填充ListView

时间:2012-01-12 10:28:28

标签: android

我有一个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("");

}});

2 个答案:

答案 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(),以便使用新数据进行更新。

  

通知附加的观察者基础数据已经存在   已更改,任何反映数据集的视图都应自行刷新。