Java 使用onlick not working更新ArrayList
我制作了一个保存水果列表的Arraylist,我想在每次点击按钮时更新它。所以我在按钮上使用了onclick方法,并尝试使用EditText添加,但出现了一个错误,说无法解析添加符号Java 使用onlick not working更新ArrayList,java,android,arraylist,Java,Android,Arraylist,我制作了一个保存水果列表的Arraylist,我想在每次点击按钮时更新它。所以我在按钮上使用了onclick方法,并尝试使用EditText添加,但出现了一个错误,说无法解析添加符号 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayList<Str
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);
您有两个arrayList,一个是本地的,另一个是全局的 onClick方法在全局arrayList中添加的项具有引用名称水果,但使用本地arrayList的ListView也具有相同名称水果,因此不要在onCreate方法中创建本地列表。另外,在添加新的FROUT调用后,适配器上的NOTIFYDATASETCHETCHANGE也发生了更改
ArrayList<String> fruits;
ListAdapter myAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fruits = new ArrayList<String>();
fruits.add("apple");
fruits.add("banana");
fruits.add("mango");
fruits.add("orange");
fruits.add("peach");
myAdapter = new CustomAdapter(this,fruits);
....
}
public void onClick (View view) {
final EditText input = (EditText) findViewById(R.id.editText);
String name = input.getText().toString();
fruits.add(name);
myAdapter.notifyDataSetChanged();
}
因为,您的水果ArrayList是一个局部变量,仅在onCreate方法中可见 首先,您需要在onCreate方法之外声明水果。 其次,在添加到fruits ArrayList后,必须调用adapter.notifyDataSetChanged以反映listview中的更改
让我知道这是否有效 您需要在onCreate方法之外定义fruits arraylist。它应该是主活动的属性 欢迎来到堆栈溢出!寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。实际上,notifyDataSetChanged方法不起作用,notify方法使应用程序崩溃