2017-12-23 15 views
0

私はのEditTextからここにリストビューにコンテンツを追加したいが仕事をdosen't私のコードです:EditTextの値をリストビュー項目に追加するにはどうすればいいですか?

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); 

コードは、リストビューにアイテムを追加しますが、プロセスが繰り返されたときには、以前に追加された置き換えます文字列を編集テキストから削除します。

+1

RecyclerViewについて聞いたことがありますか?それらはより多くの改良点を備えたより高度なListViewです。 – Aaron

答えて

0

からユーザーの入力を読み取るたびに、コードが新しいfruits_listアレイを作成しているように見えます。これにより、最新のエントリのみがリストに追加され、以前に追加されたエントリは置き換えられます。

配列を一度(クラスメンバーとして)作成してから、ユーザー入力を読み込むたびに更新する必要があります。何かのように:

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も考えてください。

関連する問題