我想将EditText中的内容添加到ListView这里是我的代码,它不起作用:
mass = userInput.getText().toString();
//fruits is a String[]
final List<String> fruits_list = new ArrayList<String(Arrays.asList(fruits));
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context.getApplicationContext(), android.R.layout.simple_list_item_1, fruits_list);
fruits_list.add(mass);
lv.setAdapter(arrayAdapter);
代码将项目添加到列表视图中,但是当重复该过程时,它会替换EditText中先前添加的字符串。
答案 0 :(得分:0)
每次从fruits_list
读取用户的条目时,您的代码似乎都会创建一个新的EditText
数组。这将导致仅将最新条目添加到列表中,替换以前添加的任何条目。
您需要创建一次数组(可能作为类成员),然后在每次读取用户输入时更新它,例如类似的东西:
private ArrayList<String> fruits_list;
private ArrayAdapter<String> arrayAdapter;
...
public void initialise(Context context) {
fruits_list = new ArrayList<>(Arrays.asList(fruits));
arrayAdapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, fruits_list);
lv.setAdapter(arrayAdapter);
}
....
public void getInput(
mass = userInput.getText().toString();
fruits_list.add(mass);
arrayAdapter.notifyDataSetChanged();
}
请注意使用arrayAdapter.notifyDataSetChanged()
表示新数据已添加到基础数据集。
正如@Aaron所说,您应该将RecyclerView
视为可能的替代品,尽管设置起来有点复杂。