2016-05-26 11 views
0

我正在申請我顯示使用recyclerview的cardviews列表,我希望能夠進行詳細的活動用戶點擊的卡片視圖,但我不知道如何將點擊的項目發送到下一個活動。我如何獲得cardview的信息,我點擊它將其發送到下一個活動

這裏u能看到我的適配器:

/** * 創建者阿爾貝託上18/05/16。 */

public class EmpresasAdapter extends RecyclerView.Adapter<EmpresasAdapter.EmpresasViewHolder> 
    implements ItemClickListener{ 
private final Context context; 
private List<Empresas> items; 

public EmpresasAdapter(Context context, List<Empresas> items) { 
    this.context = context; 
    this.items = items; 
} 

@Override 
public int getItemCount() { 
    return items.size(); 
} 

@Override 
public EmpresasViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.empresa_card, viewGroup, false); 
    return new EmpresasViewHolder(v, this); 
} 

@Override 
public void onBindViewHolder(EmpresasViewHolder viewHolder, int i) { 
    // Item procesado actualmente 
    Empresas currentItem = items.get(i); 

    viewHolder.nombrep.setText(currentItem.getNombre()); 
    viewHolder.descripcionp.setText(currentItem.getDescripcionC()); 
    viewHolder.franquiciap.setText(currentItem.getModalidad()+" | "+currentItem.getFranquicia()); 
    // Cargar imagen 
    Glide.with(context) 
      .load(currentItem.getImagen()) 
      .into(viewHolder.imagenp); 
} 

@Override 
public void onItemClick(View view, int position) { 
    // Imagen a compartir entre transiciones 
    View sharedImage = view.findViewById(R.id.imagenp); 
    EmpresaDetalle.launch(
      (Activity) context, position, sharedImage); 
} 

/** 
* View holder para reciclar elementos 
*/ 
public static class EmpresasViewHolder extends RecyclerView.ViewHolder 
     implements View.OnClickListener { 
    // Views para un curso 
    public ImageView imagenp; 
    public TextView nombrep; 
    public TextView descripcionp; 
    public TextView franquiciap; 
    // Interfaz de comunicación 
    public ItemClickListener listener; 

    public EmpresasViewHolder(View v, ItemClickListener listener) { 
     super(v); 
     nombrep = (TextView) v.findViewById(R.id.nombrep); 
     descripcionp = (TextView) v.findViewById(R.id.descripcionp); 
     franquiciap = (TextView) v.findViewById(R.id.Franquiciap); 


     imagenp = (ImageView) v.findViewById(R.id.imagenp); 
     v.setOnClickListener(this); 

     this.listener = listener; 
    } 

    @Override 
    public void onClick(View v) { 
     listener.onItemClick(v, getAdapterPosition()); 
    } 


} 
+0

哪個項目想在下一個活動中發送? –

+0

我想獲得在cardview數組中的位置,所以我可以得到所有我想要顯示的信息(我在cardview中顯示的相同信息+更多東西),並在我的詳細視圖中使用它 – Mihawk

回答

1

把項目作爲額外的意圖用於啓動DetailedActivty:

@Override 
public void onItemClick(View view, int position) { 
    // Imagen a compartir entre transiciones 
    View sharedImage = view.findViewById(R.id.imagenp); 
    Intent intent = new Intent(context, DetailedActivty.class) 
    intent.putExtra(nombrep, NOMBREP_EXTRA); 
    intent.putExtra(descripcionp, DESCRIPCIONP_EXTRA); 
    intent.putExtra(franquiciap, FRANQUICIAP_EXTRA); 
    context.startActivity(intent); 
} 
+0

它在那裏方式來獲取我點擊卡的陣列位置?所以我可以把它放在額外的,我問這個,因爲我想顯示更多的信息比詳細活動中的卡。要獲得第二個活動中的信息,我必須使用getExtra(),對嗎? – Mihawk

+0

是的,這就對了。在第二個活動中,您應該通過getExtra()獲取信息。 –

+0

我有問題,當我使用getnombreextra並在文本視圖中打印它顯示像com.example.babus.extra.NOMBRE – Mihawk

1

更改您的onCreateViewHolder這樣

public EmpresasViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.empresa_card, viewGroup, false); 
    v.setOnClickListener(new View.OnClickListener{ 
     @Override 
     public void onClick(View v){ 
      //you have the cardView in v; 
      //you can access the child view of your cardView by referring to v 
      //if you want to get the position you can do it here. 
      //Create an intent with the collected data an d start the activity 

     } 
    }); 
    return new EmpresasViewHolder(v, this); 
} 

可以在onBindView()方法做到這一點太。用這種方法可以方便地訪問位置。但這並不意味着你不能在前一種方法中佔有一席之地。您可以。但我沒有描述它。如果你願意,會做。

//to do this its easier if you have assigned and id to the cardView in XML and store the cardView in the viewHOlder 
//getting cardView 
CardView cardView=holder.cardView; 
cardView.setOnClickListener(new View.OnClickListener{ 
    @Override 
    public void onClick(View v){ 
     //position is easily availble now. 
     //you can access the rest of the views 
     //create youtr intent and start the activity 
    } 
}); 
+0

好吧,我會試試看,thx – Mihawk

相關問題