簡體   English   中英

如何在OnClickListener android上獲取Selected CardView的位置?

[英]How to get Selected CardView position on OnClickListener android?

我有聯系人列表,並且使用CardView在RecyclerView上顯示了此列表。

列表顯示完美,但是現在我要創建可點擊的卡片視圖。 這樣,當我單擊特定聯系人時,我將顯示特定聯系人的詳細信息。

當我單擊特定的CardView時,我會舉杯祝詞,但找不到所選Cardview的位置,並希望使用intent.putExtra方法將所選聯系人的詳細信息傳遞給另一個活動。

代碼:

  @Override
public ContactViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_layout, parent, false);
    ContactViewHolder contactViewHolder = new ContactViewHolder(view,ctx,contacts);
    return contactViewHolder;
}

@Override
public void onBindViewHolder(ContactViewHolder holder, int position) {
    Contact CON = contacts.get(position);
    holder.person_name.setText(CON.getName());
    holder.person_email.setText(CON.getEmail());
    holder.card_view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
    Toast.makeText(this.ctx, "Hello", Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(this.ctx,task_detail.class);
    this.ctx.startActivity(intent);
}

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

public static class ContactViewHolder extends RecyclerView.ViewHolder {
    TextView person_name, person_email;
    ArrayList<Contact> contacts = new ArrayList<Contact>();
    Context ctx;
    CardView card_view;

    public ContactViewHolder(View view, Context ctx ,ArrayList<Contact> contacts) {
        super(view);
        this.contacts=contacts;
        this.ctx = ctx;
        person_name = (TextView) view.findViewById(R.id.person_name);
        person_email = (TextView) view.findViewById(R.id.person_email);
        card_view =  (CardView) view.findViewById(R.id.card_view);
    }
}

使用以下代碼。 而不是使用holder.card_view.setOnClickListener(this); onBindViewHolder ,像這樣在ContactViewHolder使用它, card_view.setOnClickListener(this); 這樣您就可以使用getPosition()方法獲取位置。

public static class ContactViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView person_name, person_email;
    ArrayList<Contact> contacts = new ArrayList<Contact>();
    Context ctx;
    CardView card_view;

    public ContactViewHolder(View view, Context ctx ,ArrayList<Contact> contacts) {
        super(view);
        this.contacts=contacts;
        this.ctx = ctx;
        person_name = (TextView) view.findViewById(R.id.person_name);
        person_email = (TextView) view.findViewById(R.id.person_email);
        card_view =  (CardView) view.findViewById(R.id.card_view);
        card_view.setOnClickListener(this);
    }
 @Override
        public void onClick(View v) 
       {
          Toast.makeText(this.ctx, "position "+getPosition(), Toast.LENGTH_SHORT).show();
         Intent intent = new Intent(this.ctx,task_detail.class);
          this.ctx.startActivity(intent);
       }
}

暫無
暫無

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

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