2012-01-12 67 views
0

我有一个EditText对话框,以便用户可以输入姓名,然后点击添加按钮和名称保存到阵列playerList并清除框,以便可以添加其他名称。填充ListView控件与动态数组

我也有一个ListView关于同一个活动,然后将由ArrayplayerList中的名称填充。问题在于ListView似乎没有人口。

所以我尝试了一个错误集字符串teststring,你可以看到下面,并填充ListView罚款。我的问题是怎么来的ArrayplayerList可能它不能正确保存到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

你试图打印数组值我的意思是playerlist值.. ????数组填充罚款.. ????如果是,那么只要适配器更新,就必须调用notifyDataSetChnaged()。 – 2012-01-12 10:34:03

回答

2

你应该增加新的项目,使之与新的数据更新后,调用adapter.notifyDataSetChanged()

通知附属的观察员,底层数据已被更改,并且任何反映数据集的视图都应刷新自身。

+0

应该在哪里调用? – Matt 2012-01-12 10:34:39

+0

刚更新完列表。它基本上告诉它它有新的项目。 – Jave 2012-01-12 10:35:12

+0

所以它会''playerList.add(name);' – Matt 2012-01-12 10:38:20

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

嘿,回答我4秒前:p – Jave 2012-01-12 10:33:00

+0

@Lalit哪里应该被称为? – Matt 2012-01-12 10:35:10

+0

马特当你只是调用'adapter.notifyDataSetChanged()' – 2012-01-12 10:38:30