Quantcast
Channel: Usuario Eduardo Barrios - Stack Overflow en español
Viewing all articles
Browse latest Browse all 15

Como actualizo la lista de un RecyclerView en tiempo real cuando inserto un registro en SQLite

$
0
0

Tengo una activity con un ViewPager y dentro tres fragments y desde el tercer fragment tengo un pequeño formulario y abajo un recyclerview que contiene los datos que guardo en el form de arriba, lo que intento hacer es que al guardar un registro el recyclerView se actualice en tiempo real, pero no lo he conseguido llevo semanas con este problema. Adjunto una imagen para que tenga idea de lo que digo. https://i.stack.imgur.com/gZODw.png estoy usando

Este es el Fragment

public class TarifaFragment extends Fragment implements View.OnClickListener{EditText edtTarifa;TextView tvFecha;ImageButton imgbtnFecha;Button btnCrearTarifa;// objeto helper para gestionar operaciones con la base de datosDBHelper conn;// Recycler para cargar la lista de registros almacenados en la base de datosRecyclerView recyclerTarifas;ArrayList<Tarifa> listaTarifas;TarifaAdapter adapter;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    View rootView = inflater.inflate(R.layout.fragment_tarifa, container, false);    // inicializar el bojeto conexion    conn = new DBHelper(getActivity());    listaTarifas = new ArrayList<>();    imgbtnFecha = (ImageButton) rootView.findViewById(R.id.imgbtnFecha);    imgbtnFecha.setOnClickListener(this);    tvFecha = (TextView)rootView.findViewById(R.id.tvFechaTarifa);    edtTarifa = (EditText)rootView.findViewById(R.id.edtTarifa);    btnCrearTarifa = (Button)rootView.findViewById(R.id.btnCrearTarifa);    btnCrearTarifa.setOnClickListener(this);    recyclerTarifas = (RecyclerView)rootView.findViewById(R.id.recyclerTarifa);    // setear el layout para el recyclerView    recyclerTarifas.setLayoutManager(new LinearLayoutManager(getActivity()));    ConsultarListaTarfias();    adapter = new TarifaAdapter(listaTarifas);    recyclerTarifas.setAdapter(adapter);    return rootView;}private void ConsultarListaTarfias(){    SQLiteDatabase db = conn.getReadableDatabase();    Tarifa tarifa = null;    Cursor cursor = db.rawQuery("SELECT * FROM "+Utils.NOMBRE_TABLATARIFA+" ORDER BY tarifaId DESC",null);    while(cursor.moveToNext())    {        tarifa = new Tarifa();        tarifa.setId(cursor.getInt(0));        tarifa.setTarifa(cursor.getString(1));        tarifa.setFecha(cursor.getString(2));        listaTarifas.add(tarifa);    }}public void InsertarTarifa(){    SQLiteDatabase db = conn.getWritableDatabase();    ContentValues values = new ContentValues();    String tarifa = edtTarifa.getText().toString();    String fechaTarifa = tvFecha.getText().toString();    values.put(Utils.CAMPO_CANTIDADTARIFA,tarifa);    values.put(Utils.CAMPO_FECHATARIFA,fechaTarifa);    if(!(tarifa.equals("")) && !(fechaTarifa.equals("")) && !(fechaTarifa.equals("Fecha")))    {        long resultado = db.insert(Utils.NOMBRE_TABLATARIFA,Utils.CAMPO_TARIFAID,values);        if(resultado != 0)        {            Log.i("Registro Creado",""+resultado);            final SweetAlertDialog dialogo = new SweetAlertDialog(getActivity(),SweetAlertDialog.SUCCESS_TYPE);                    dialogo.setTitleText("EXITO!")                    .setContentText("REGISTRO CREADO CORRECTAMENTE")                    .setConfirmText("CONTINUAR")                    .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {                        @Override                        public void onClick(SweetAlertDialog sweetAlertDialog) {                            dialogo.dismiss();                        }                    })                    .show();            tvFecha.setText("Fecha");            edtTarifa.setText("");        }    }    else    {        final SweetAlertDialog dialogo = new SweetAlertDialog(getActivity(),SweetAlertDialog.ERROR_TYPE);        dialogo.setTitleText("ERROR!")                .setContentText("TODOS LOS CAMPOS SON REQUERIDOS")                .setConfirmText("CONTINUAR")                .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {                    @Override                    public void onClick(SweetAlertDialog sweetAlertDialog) {                        dialogo.dismiss();                    }                })                .show();    }    db.close();}@Overridepublic void onClick(View v) {    switch (v.getId())    {        case R.id.tvFechaTarifa:            CrearDialogoFecha(v,getActivity(),getActivity().getFragmentManager());            break;        case R.id.imgbtnFecha:            CrearDialogoFecha(v,getActivity(),getActivity().getFragmentManager());            break;        case R.id.btnCrearTarifa:            InsertarTarifa();            break;    }}

}

Este es el código del Adapter

public class TarifaAdapter extends RecyclerView.Adapter<TarifaAdapter.ViewHolderTarifa> {ArrayList<Tarifa> listaTarifas;public TarifaAdapter(ArrayList<Tarifa> listaTarifas){    this.listaTarifas = listaTarifas;}@Overridepublic ViewHolderTarifa onCreateViewHolder(ViewGroup parent, int viewType) {    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_tarifas,null,false);    return new ViewHolderTarifa(view);}@Overridepublic void onBindViewHolder(ViewHolderTarifa holder, int position) {    Tarifa tarifa = this.listaTarifas.get(position);    //tarifa.getMySpecialStatus();    holder.tvTarifa.setText("Q."+listaTarifas.get(position).getTarifa());    holder.tvFechaTarifa.setText(listaTarifas.get(position).getFecha());}@Overridepublic int getItemCount() {    return listaTarifas.size();}public void update(ArrayList<Tarifa> modelList){    this.listaTarifas.clear();    for (Tarifa model: modelList) {        this.listaTarifas.add(model);    }    notifyDataSetChanged();}public void replaceItem(ArrayList<Tarifa> lista){    this.listaTarifas.clear();        if(lista != null)        {            this.listaTarifas.clear();            this.listaTarifas.addAll(lista);        }        else        {            this.listaTarifas = lista;        }        notifyDataSetChanged();}public class ViewHolderTarifa extends RecyclerView.ViewHolder {    TextView tvTarifa, tvFechaTarifa;    public ViewHolderTarifa(View itemView) {        super(itemView);        tvTarifa = (TextView)itemView.findViewById(R.id.tvTarifa);        tvFechaTarifa = (TextView)itemView.findViewById(R.id.tvFechaTarifa);    }}

}


Viewing all articles
Browse latest Browse all 15

Latest Images

Trending Articles





Latest Images