簡體   English   中英

從 ViewHolder onclick 開始活動

[英]Start activity from ViewHolder onclick

當用戶單擊 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();
    }
}

要啟動 Activity,您應該執行context.startActivity(intent); 至於您正在談論的 3 個 JSON 參數,我在您的代碼中找不到它們的任何引用(沒有任何 JSON 的引用)。 我猜您可能在談論來自 Poliza 對象的字段,但我不能確定。

使用活動上下文

Intent intent = new Intent(context,AnotherActivity.class);
context.startActivity(intent);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM