我正在聊天,我需要增加一个包含已发送邮件的列表,但我无法做到。
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 :(得分: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();
}
答案 1 :(得分:0)
您的错误:您无法在一种方法中将列表创建为局部变量,而在另一种方法中使用它。你必须使mensages
成为一个类变量。
答案 2 :(得分:0)
如果我理解正确,你需要一个成员变量。
您可以直接添加到ArrayAdapter而无需通知DatasetChanged
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);
}