这是我的代码:
public class ListasCompra extends ListActivity {
private ArrayList<Lista> listaCompras = null;
private ListaAdapter adaptador = null;
private static ListasCompra instancia = null;
private static Context context = null;
private Button aceptar = null;
private Button nueva = null;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.lista_de_listas);
listaCompras = LocalService.getDbListas().getListas();
aceptar = (Button)findViewById(R.id.aceptarlistas);
aceptar.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
nueva = (Button)findViewById(R.id.nuevalistas);
nueva.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
startActivity(new Intent(context, NuevaLista.class));
//finish();
}
});
if(listaCompras!=null){
adaptador = new ListaAdapter(this, listaCompras);
setListAdapter(adaptador);
}else{
listaCompras = new ArrayList<Lista>();
adaptador = new ListaAdapter(this, listaCompras);
setListAdapter(adaptador);
}
context = this;
instancia = this;
}
/**
* Ciclo Vida de Actividad
*/
@Override
public void onDestroy(){
super.onDestroy();
}
@Override
public void onResume(){
super.onResume();
listaCompras = LocalService.getDbListas().getListas();
adaptador = new ListaAdapter(context, listaCompras);
adaptador.notifyDataSetChanged();
}
我想要的是,每次进入方法“onResume”时都要更新适配器,这是每次为用户重新显示活动......
我的问题是它没有使用这种方法更新,任何人都知道为什么??
谢谢!
答案 0 :(得分:1)
每次恢复活动时都不要创建适配器。在onCreate()
中创建一次,然后在notifyDataSetChanged()
中调用onResume()
。
但是,您最大的问题是,您正在onResume()中创建一个新的适配器,并且永远不会将它附加到ListView!如果您必须按原样保留代码,请在setListAdapter(adaptador)
onResume()
答案 1 :(得分:1)
在onCreate(...)
你这样做......
adaptador = new ListaAdapter(this, listaCompras);
setListAdapter(adaptador);
在执行此操作时,您要传递对ListView
的引用 - 该引用是对ListAdapter
调用所创建的new...
的引用。
在onResume()
你这样做......
adaptador = new ListaAdapter(context, listaCompras);
adaptador.notifyDataSetChanged();
...现在adaptador
对新ListAdapter
有了新的引用,但ListView
本身仍在维护对您在ListAdapter
中实例化的第一个onCreate(...)
的引用{1}}。
最简单的方法是完全删除onCreate(...)
中的代码,然后让onResume()
处理创建ListAdapter
并调用setListAdapter(...)
。