如何将EditText的值添加到listview项?

时间:2017-12-23 20:17:14

标签: java android arrays listview

我想将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中先前添加的字符串。

1 个答案:

答案 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视为可能的替代品,尽管设置起来有点复杂。