2016-04-25 7 views
1

を取得するので、私は、私はカードを表示するためのカスタム・アダプターを持っているRecyclerViewを持っているカードはCardViewにOnClickListner追加し、私はCardViewにOnClickListenerを添付するワンデータ

からIDを取得することができます。これが実装されている方法です。

他の例をstackoverflowで試しましたが、うまくいきませんでした。

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { 
private ArrayList<Patient> patients; 
Context mContext; 
String idPatient; 

public CardAdapter(ArrayList<Patient> patients) { 
    this.patients = patients; 
    } 

     @Override 
public CardAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_card_view, viewGroup, false); 
    return new ViewHolder(view); 
    } 

@Override 
public void onBindViewHolder(CardAdapter.ViewHolder viewHolder, int i) { 

    viewHolder.first_name.setText(patients.get(i).getFirstName()); 
    viewHolder.last_name.setText(patients.get(i).getLastName()); 
    viewHolder.id_patient.setText(String.valueOf(patients.get(i).getId())); 

    viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //trying to get ID From card 
      ViewGroup parentView = (ViewGroup)v.getParent(); 
      TextView idpatientview =(TextView)parentView.findViewById(R.id.idViewPatient); 
      idPatient = idpatientview.getText().toString(); 
      PreferencesHelper.save(mContext, "idPatient", idPatient); 
      Intent intent = new Intent(mContext, BluetoothActivity.class); 
      mContext.startActivity(intent); 

     } 
    }); 

    } 

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

public class ViewHolder extends RecyclerView.ViewHolder{ 
      private TextView first_name,last_name,id_patient; 
    public ViewHolder(View view) { 
     super(view); 

     first_name = (TextView)view.findViewById(R.id.textViewName); 
     last_name = (TextView)view.findViewById(R.id.textViewLastName); 
     id_patient = (TextView)view.findViewById(R.id.idViewPatient); 

    } 
     } 
       } 
+0

IDを取得することで、ポジションを取得することができますか? –

+0

@DavidSeroussiいいえ、私は他の活動でそれを使用する必要があるので、カードや患者の名前から患者のIDを取得することを意味します、私は途中でRestfullサービスからデータを取得しています。 –

+0

はい、私はArrayListを使用してカードを挿入していることがわかります。つまり、カードの位置を取得した場合、インデックスとして使用してカードからデータを取得できます。 –

答えて

1

あなたのonClickメソッドがあなたのonBindViewHolder内にある場合、あなたはあなたのonClickListenerで直接

String first_name = patients.get(i).getFirstName(); 
String last_name = patients.get(i).getLastName(); 
String id_patient = String.valueOf(patients.get(i).getId()); 

現在のデータを取得することができ、クリックされたカードに対応する患者のIDは、単にid_patientあり、ファーストネームはfirst_nameで、ファーストネームはlast_nameです。これでデータをアクティビティに渡すことができます(例:インタフェース用)

+0

String id_patient = viewHolder.id_patient.setText(String.valueOf(patients.get(i).getId())); 返されたsetText戻り値は無効です –

+1

時々私は少し速いですが、それを修正してくれます –

+1

これは今すぐうれしいです –

関連する問題