[英]Start activity with onclick button in listview using Viewholder
[英]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.