我想在ListView中添加一个元素。我尝试使用myAdapter.add()(参见下面的代码),因为ArrayAdapter有一个add()方法。但那没用。将元素添加到ListView的正确方法是什么?
public class LinearLayoutDemo extends ListActivity implements OnItemClickListener {
private static final String[] items={"1", "2", "4", "8", "16", "32", "64"};
ListView myLV;
ArrayAdapter myAdapter;
@Override public void onCreate(Bundle icicle) {
super.onCreate(icicle);
myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_activated_1, items);
myLV = (ListView) findViewById(android.R.id.list);
myLV.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
myLV.setAdapter(myAdapter);
// The following causes the program to fail:
myAdapter.add("128");
}
此外,如果我尝试myAdapter.clear(),程序会崩溃。我没有正确使用ArrayAdapter吗?
答案 0 :(得分:2)
您必须添加到items
,然后致电myAdapter.notifyDataSetChanged()
。但是您将items
定义为final
的方式无法添加。如果您想轻松添加新元素,则应将项目声明为ArrayList<String>
。
public class LinearLayoutDemo extends ListActivity implements OnItemClickListener {
private static List<String> items = Arrays.asList("1", "2", "4", "8", "16", "32", "64");
ListView myLV;
ArrayAdapter myAdapter;
@Override public void onCreate(Bundle icicle) {
super.onCreate(icicle);
myAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_activated_1, items);
myLV = (ListView) findViewById(android.R.id.list);
myLV.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
myLV.setAdapter(myAdapter);
items.add("128");
myAdapter.notifyDataSetChanged();
}
答案 1 :(得分:0)
您需要致电:
myAdapter.notifyDataSetChanged();
添加元素后适配器上的以通知适配器数据集中的任何更改,但是在创建Array
后无法更改数据集。请改用ArrayList
。