У меня есть «recylerView» со всеми курсами, которые у меня есть в mysql БД, пользователь выбирает один и может сохранить в другой таблице mysql под названием «Избранное» (у меня уже есть запрос, и он работает нормально), затем У меня есть кнопка, с которой я хочу открыть то же самое recylerview, но только с избранными, которые есть у пользователя, я понятия не имею, как это сделать, если это может помочь мне, но медленно это мой первый проект;)
public class AdaptadorCursos extends RecyclerView.Adapter<AdaptadorCursos.CursosViewHolder> {
private
Context context;
List<Cursos> listaCursos;
@SuppressLint("ResourceType")
public AdaptadorCursos(Context context, List<Cursos> listaCursos) {
this.context = context;
this.listaCursos = listaCursos;
}
@NonNull
@Override
public AdaptadorCursos.CursosViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_rv_cursos, viewGroup, false);
return new CursosViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull CursosViewHolder CursosViewHolder, int i) {
Glide.with(context).
load(listaCursos.get(i).getImagen()).
error(R.drawable.noimagen).
into(CursosViewHolder.imagen);
CursosViewHolder.Idcurso.setText(listaCursos.get(i).getidcurso());
CursosViewHolder.Titulo.setText(listaCursos.get(i).getTitulo());
CursosViewHolder.Descripcion.setText(listaCursos.get(i).getDescripcion());
CursosViewHolder.Categoria.setText(listaCursos.get(i).getCategoria());
}
@Override
public int getItemCount() {
return listaCursos.size();
}
public class CursosViewHolder extends RecyclerView.ViewHolder {
TextView Idcurso,Titulo, Descripcion, Categoria;
ImageView imagen;
public CursosViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent r= new Intent(v.getContext(),Detalle_Curso.class);
r.putExtra("idcurso",listaCursos.get(getAdapterPosition()).getidcurso());
r.putExtra("titulo",listaCursos.get(getAdapterPosition()).getTitulo());
r.putExtra("descripcion",listaCursos.get(getAdapterPosition()).getDescripcion());
r.putExtra("categoria",listaCursos.get(getAdapterPosition()).getCategoria());
r.putExtra("imagen",listaCursos.get(getAdapterPosition()).getImagen());
v.getContext().startActivity(r);
}
});
Idcurso = itemView.findViewById(R.id.tvIdcurso);
Titulo = itemView.findViewById(R.id.tituloDetalle);
Descripcion = itemView.findViewById(R.id.tvDescripcion);
Categoria = itemView.findViewById(R.id.tvCategoria);
imagen = itemView.findViewById(R.id.tvImagen);
}
}
public void filtrar(ArrayList<Cursos> filtroCursoss) {
this.listaCursos = filtroCursoss;
notifyDataSetChanged();
}
public class PrincipalActivity extends AppCompatActivity {
EditText etBuscador;
RecyclerView rvLista;
AdaptadorCursos adaptador;
List<Cursos> listaCurso;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
etBuscador = findViewById(R.id.etBuscador);
FloatingActionButton botonF = (FloatingActionButton) findViewById(R.id.fabCerrar);
botonF.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder= new AlertDialog.Builder(PrincipalActivity.this);
builder.setIcon(R.mipmap.ic_launcher).
setTitle("Cerrar Sesion").setMessage("¿Esta seguro que quiere cerrar su sesion?").
setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SharedPreferences preferences=getSharedPreferences("preferenciasLogin", Context.MODE_PRIVATE);
preferences.edit().clear().commit();
Intent intent=new Intent(getApplicationContext(),MainActivity.class);
startActivity(intent);
finish();
}
}).setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
});
etBuscador.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void afterTextChanged(Editable s) {
filtrar(s.toString());
}
});
rvLista = findViewById(R.id.rvLista);
rvLista.setLayoutManager(new GridLayoutManager(this, 1));
listaCurso= new ArrayList<>();
obtenerCursos();
adaptador = new AdaptadorCursos(PrincipalActivity.this, listaCurso);
rvLista.setAdapter(adaptador);
}
public void obtenerCursos() {
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest = new StringRequest(Request.Method.POST, getResources().getString(R.string.URL_cursos),
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("Curso");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
boolean add = listaCurso.add(
new Cursos(
jsonObject1.getString("id_curso"),
jsonObject1.getString("titulo"),
jsonObject1.getString("descripcion"),
jsonObject1.getString("categoria"),
jsonObject1.getString("imagen")
)
);
}
adaptador = new AdaptadorCursos(PrincipalActivity.this, listaCurso);
rvLista.setAdapter(adaptador);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}
);
requestQueue.add(stringRequest);
}
public void filtrar(String texto) {
ArrayList<Cursos> filtrarLista = new ArrayList<>();
for(Cursos cursos : listaCurso) {
if(cursos.getTitulo().toLowerCase().contains(texto.toLowerCase())) {
filtrarLista.add(cursos);
}
}
adaptador.filtrar(filtrarLista);
}
public Cursos(String idcurso,String titulo, String descripcion, String categoria,String imagen) {
this.idcurso=idcurso;
this.titulo = titulo;
this.descripcion = descripcion;
this.categoria = categoria;
this.imagen = imagen;
}
public String getidcurso() {
return idcurso;
}
public void setidcurso(String idcurso) { this.idcurso = idcurso; }
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public String getImagen() {
return imagen;
}
public void setImagen(String imagen) {
this.imagen = imagen;
}
}