从ViewHolder启动活动onclick

时间:2016-04-18 00:35:06

标签: android

我在用户点击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();
    }
}

3 个答案:

答案 0 :(得分:4)

要启动活动,您应该context.startActivity(intent); 至于你所说的3 JSON参数,我在你的代码中找不到它们的任何引用(没有任何引用任何JSON)。我猜你可能在谈论Poliza对象的一个​​字段,但我不能确定。

答案 1 :(得分:0)

使用活动上下文

{{1}}

答案 2 :(得分:0)

使用view.context.startactivity(new Intent(view.context.this, NewActivity().class))