如何向ListView添加元素?

时间:2013-04-03 23:28:02

标签: android android-widget

我想在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吗?

2 个答案:

答案 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