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); }}
}