我在用户点击RecycleView元素时尝试启动新活动。问题是我想要传递给JSON的对象的一个字段显示在row_item布局中,并且不知道如何检索其他3个对象字段。
以下是我要遵循的步骤。
首先,我将一个对象列表(Poliza)发送到适配器。 其次,我在RecycleView中只显示了一个对象(poliza)的一个字段。 第三,我想在用户点击RecycleView项目时发起一个新活动,发送该对象的JSON以及row_item中未显示的其他对象字段。
这是我的适配器
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();
}
}
答案 0 :(得分:4)
要启动活动,您应该context.startActivity(intent);
至于你所说的3 JSON参数,我在你的代码中找不到它们的任何引用(没有任何引用任何JSON)。我猜你可能在谈论Poliza对象的一个字段,但我不能确定。
答案 1 :(得分:0)
使用活动上下文
{{1}}
答案 2 :(得分:0)
使用view.context.startactivity(new Intent(view.context.this, NewActivity().class))