我制作了一个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);
答案 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。它应该是主要活动的财产。