使用onlick更新ArrayList不起作用

时间:2017-06-25 08:52:40

标签: java android arraylist

我制作了一个Arraylist,它保留了水果列表,我想在每次单击按钮时更新它。所以我在按钮上使用onclick方法并尝试使用EditText添加,但弹出错误,说无法解析添加符号。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ArrayList<String> fruits = new ArrayList<String>();
    fruits.add("apple");
    fruits.add("banana");
    fruits.add("mango");
    fruits.add("orange");
    fruits.add("peach");

    ListAdapter myAdapter = new CustomAdapter(this,fruits);
    ListView mylist = (ListView) findViewById(R.id.list);
    mylist.setAdapter(myAdapter);

    mylist.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String fruit = String.valueOf(parent.getItemAtPosition(position));
                    Toast.makeText(MainActivity.this,fruit,Toast.LENGTH_LONG).show();
                }
            }

    );


}

public void onClick (View view) {
    final EditText input = (EditText) findViewById(R.id.editText);
    String name = input.getText().toString();
    fruits.add(name);

3 个答案:

答案 0 :(得分:0)

您有两个arrayList,一个是local,另一个是global。

onClick()方法您在全局arrayList中添加项目,其中包含引用名称fruits,但您的ListView使用本地arrayList也具有相同的名称fruit,因此不要在{{1}内创建本地列表} 方法。在您的适配器上添加新的水果调用onCreate()之后。

notifyDataSetChanged()

答案 1 :(得分:0)

因为,你的水果ArrayList是一个只在onCreate()方法中可见的局部变量。

首先你需要在onCreate()方法之外声明水果。 第二,在添加到水果ArrayList之后,你必须调用adapter.notifyDataSetChanged()来反映listview中的变化。

让我知道这是否有效!!

答案 2 :(得分:0)

您需要在onCreate方法之外定义水果arraylist。它应该是主要活动的财产。