notifyDataSetChanged无法使用simplecursoradapter

时间:2014-11-28 19:52:31

标签: android

有人可以帮我通知datasetchanger无法刷新我的listview。

我希望每次关闭和第二次活动时都刷新我的列表视图。

以下是我现在使用的代码,只有在关闭listview refres的打开活动时才会使用。

public class Serie extends Activity {

    private dbManager manager;
    String [] margs;
    ListView lstSeries;
    String message;
    SimpleCursorAdapter Adaptador;
    Cursor Cursor_Serie;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_serie);

        try{

            manager = new dbManager(getBaseContext());


            lstSeries = (ListView)findViewById(R.id.lstSeries);

            //Variable para con los campos que se desean obtener para el spinner
            String[] del =  new String[]{"_id","vendedor","activador","cliente"};
            //String[] del =  new String[]{"_id","DESCR"};
            //Variable para determinar el id de los controles a donde van a llenar.
            int[]al=new int[]{R.id.txtNo_Telefono,R.id.txtVendedor, R.id.txtActivador,R.id.txtCliente};

            //llama la funcion para llenar el grid view de resumen
            Cursor_Serie = manager.Series_Promotores(getBaseContext(),Global.Parametro1, Global.Parametro2);
            Adaptador =new SimpleCursorAdapter(this,R.layout.lyseries,Cursor_Serie,del,al,0);
            //Devuelve un adapter con la informacion del producto
            Adaptador.notifyDataSetChanged();
            lstSeries.setAdapter(Adaptador);


            lstSeries.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                    try{

                        //Obtiene el cursor asignado a este listview
                        Cursor Cursor_Series = (Cursor) parent.getItemAtPosition(position);
                        //Llena las variables con los valores correspondientes
                        Global.Parametro1 = Cursor_Series.getString(Cursor_Series.getColumnIndexOrThrow("_id"));

                        Intent appInfo = new Intent(Serie.this, Ficha.class);
                        startActivity(appInfo);

                    }
                    catch (Exception e) {
                        message = e.getMessage();
                        Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG).show();
                    }

                 }
            });


        }
        catch (Exception e) {
            message = e.getMessage();
            Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG).show();
        }

    }


    @Override
    public void onResume() {
        super.onResume();


        Adaptador.notifyDataSetChanged();
    }


}

1 个答案:

答案 0 :(得分:0)

SimpleCursorAdapter不会自动获取新数据。 最简单的解决方案是在onResume()

中简单运行
String[] del =  new String[]{"_id","vendedor","activador","cliente"};
int[]al=new int[]{R.id.txtNo_Telefono,R.id.txtVendedor, R.id.txtActivador,R.id.txtCliente};
Cursor_Serie = manager.Series_Promotores(getBaseContext(),Global.Parametro1, Global.Parametro2);
Adaptador =new SimpleCursorAdapter(this,R.layout.lyseries,Cursor_Serie,del,al,0);
lstSeries.setAdapter(Adaptador);

您将创建一个新的Cursor并重新读取数据,然后在新的SimpleCursorAdapter中获取该数据,然后将其设置为ListView并更新其代表。