0

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

4

2 回答 2

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();
}
于 2013-04-03T23:48:49.583 回答
0

您需要致电:

myAdapter.notifyDataSetChanged();

在添加元素后在适配器上通知适配器数据集的任何更改,但是在创建Array. 改为使用ArrayList

于 2013-04-03T23:28:54.487 回答