Ich versuche eine neue Aktivität zu starten, wenn der Benutzer auf ein RecycleView-Element klickt. Das Problem ist, dass nur ein Objektfeld, das ich an JSON übergeben möchte, im row_item-Layout angezeigt wird und ich nicht weiß, wie die anderen 3 Objektfelder abgerufen werden.Aktivität von ViewHolder starten onclick
Hier sind die Schritte, denen ich folge.
Zuerst sende ich eine Liste von Objekten (Poliza) an den Adapter. Zweitens zeige ich nur ein Feld des Objekts (Poliza) in der RecycleView. Drittens möchte ich eine neue Aktivität starten, wenn der Benutzer auf das RecycleView-Element klickt und ein JSON des Objekts mit den anderen Objektfeldern sendet, die nicht im row_item angezeigt werden.
Hier mein Adapter ist
public class PolizasAdapter extends RecyclerView.Adapter<PolizasAdapter.PolizaViewHolder> {
private List<Poliza> listapoliza = null;
private Context context;
public PolizasAdapter( List<Poliza> listapoliza) {
this.listapoliza = listapoliza;
}
public class PolizaViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
// each data item is just a string in this case
TextView txtPoliza;
public PolizaViewHolder(View view) {
super(view);
//Agregamos un onclickListener
view.setOnClickListener(this);
context = view.getContext();
//Hacemos referencia a las vistas del rowitem
txtPoliza = (TextView) view.findViewById(R.id.txt_poliza);
}
@Override
public void onClick(View view) {
//Evento que que se genera cuando se da click
TextView texto = (TextView) view.findViewById(R.id.txt_poliza);
String str = texto.getText().toString();
System.out.println(str);
//Iniciamos actividad mostrando el detalle
Intent intent = new Intent(context , DetalleActivity.class);
intent.putExtra("id_poliza",str);
//Whats next ?
//How to add the other 3 fields of my object to the putExtra
}
}
@Override
public PolizasAdapter.PolizaViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//Creamos una nueva vista
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item, parent, false);
PolizaViewHolder viewHolder = new PolizaViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(PolizasAdapter.PolizaViewHolder holder, int position) {
holder.txtPoliza.setText("Poliza : " + String.valueOf(listapoliza.get(position).getPoliza()));
}
)
@Override
public int getItemCount() {
return listapoliza.size();
}
}
'context.startActivity (Vorsatz);' – adnbsr
Sie die ganze Liste Aktivität passieren können und die Liste der Aktivitäten abrufen und das Objekt filtern. – Sanjeev