2016-06-17 4 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

Что ошибка? Как это не работает? – Timo

+0

вам не хватает 'adapter.notifyDataSetChanged()' – Shark

ответ

0

Ваша ошибка: Вы не можете создать список в качестве локальной переменной в одном методе и использовать его в другом. Вы должны сделать переменную класса mensages.

+0

okay, поэтому я должен использовать acriar ArrayList < String> сообщения перед методом onCreate android и использовать его в методе, который я хочу приращения? даже создавая его в onCreate? –

2

Объявите как arralist, так и адаптер снаружи, а затем просто сообщите, когда данные будут изменены, поэтому он будет работать, проверьте ниже решение.

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

Если я правильно понял, вам нужна переменная-член.

И вы можете добавить к ArrayAdapter непосредственно без необходимости 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); 
}