2016-06-17 8 views
-1

私はチャットをしていますが、できなかったものの、送信されたメッセージをリストに追加する必要があります。ArrayListとArrayAdpterでアイテムを追加する方法

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_janela); 
    ArrayList<String> mensagens = new ArrayList<String>(); 
    ArrayAdapter<String> adapter = 
     new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mensagens); 
    ListView lv = (ListView)findViewById(R.id.lista); 
    lv.setAdapter(adapter); 
} 

この方法では、メッセージテキストが表示され、ここでリストを増やしたいと考えています。

private void escreve(String texto) { 
    mensagens.add(texto); 
} 

私はそれは、注意

+0

に必要とせずに、直接ArrayAdapterに追加することができますか?どのように動作しませんか? – Timo

+0

あなたは 'adapter.notifyDataSetChanged()'が不足しています – Shark

答えて

0

あなたのエラーのおかげで明らかになってきている願っています:あなたは一つの方法でローカル変数としてリストを作成し、別でそれを使用することはできません。 mensagesをクラス変数にする必要があります。

+0

大丈夫ですので、アンドロイドのonCreateメソッドの前にArrayList < String>メッセージを書いて、それをインクリメントする方法で使用してください。 onCreateでインスタンス化することさえできますか? –

2

arralistとadapterの両方を外部に宣言し、データが変更されたときに通知するだけで、以下の解決策を確認してください。

ArrayList<String> mensagens; 
    ArrayAdapter<String> adapter; 

    protected void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_janela); 
    mensagens = new ArrayList<String>(); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mensagens); 
    ListView lv = (ListView)findViewById(R.id.lista); 
    lv.setAdapter(adapter); 
} 


private void escreve(String texto) { 
     mensagens.add(texto); 
     adapter.notifyDataSetChanged(); 
    } 
+0

ありがとうございました –

+0

ここにコード全体を表示 – Vickyexpert

0

私が正しく理解している場合は、メンバー変数が必要です。

そして、あなたはエラー何notifyDatasetChanged

private ArrayAdapter<String> adapter; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_janela); 
    ArrayList<String> mensagens = new ArrayList<String>(); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mensagens); 
    ... 

private void escreve(String texto) { 
    adapter.add(texto); 
} 
関連する問題