2016-05-26 6 views
0

私はアプリケーションを作っています。私はrecyclerviewを使ってcardviewsのリストを表示していました。 cardviewユーザーがクリックしますが、次のアクティビティにクリックされたアイテムを送信する方法はわかりません。私はcardviewの情報をどのように入手することができますか?

/** * 18/05/16にアルベルト作成者:

はここにuが私のアダプターを見ることができます。 */

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 +何かに表示)と詳細ビューで使用する – 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

それはある私はクリックするカードの配列位置を取得する方法は?だから私は余分にそれを置くことができます、私は詳細活動のカードのいずれかよりも多くの情報を表示したいので、私はこれを求めています。 2番目のアクティビティで情報を取得するには、getExtra()を使用する必要がありますか? – Mihawk

+0

はい、そうです。 2番目のアクティビティでは、getExtra()によって情報を取得する必要があります。 –

+0

私はgetnombreextraを使用してtextviewで印刷すると、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

ok、私はそれを試してみよう – Mihawk

関連する問題