2012-01-12 110 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