0
我在RecyclerView
上顯示CardView
中的聯繫人列表,現在我想在打電話OnLongClick
特定CardView
事件時打開上下文菜單。如何打開CardView List android上的onLongClick事件後的上下文菜單?
像編輯,刪除選項。
在CardView
佈局我已經添加了兩個佈局,左側接觸顯示和右側兩個按鈕增加了不同事件處理程序處理的歷史和狀態。
如果我長按一下CardView
一個彈出窗口打開,我可以編輯和刪除聯繫人,並從這些選項 - 刪除或編輯點擊事件將處理特定聯繫人。
ContactAdapter
代碼:
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> {
ArrayList<Contact> contacts = new ArrayList<Contact>();
Context ctx;
public ContactAdapter(ArrayList<Contact> contacts,Context ctx) {
this.contacts = contacts;
this.ctx = ctx;
}
@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());
}
@Override
public int getItemCount() {
return contacts.size();
}
public static class ContactViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
TextView person_name, person_email,btn_history,btn_task_update;
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);
btn_history = (TextView) view.findViewById(R.id.btn_history);
btn_task_update= (TextView) view.findViewById(R.id.btn_task_update);
card_view.setOnClickListener(this);
card_view.setOnLongClickListener(this);
btn_history.setOnClickListener(this);
btn_task_update.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
Contact contact = this.contacts.get(position);
if(v.getId()==R.id.card_view) {
Toast.makeText(this.ctx, "position Card View" + position, Toast.LENGTH_SHORT).show();
}
else if(v.getId()==R.id.btn_history)
{
Toast.makeText(this.ctx, "position History" + position, Toast.LENGTH_SHORT).show();
}
else if(v.getId()==R.id.btn_task_update)
{
Toast.makeText(this.ctx, "position Task Status" + position, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this.ctx, task_detail.class);
intent.putExtra("name", contact.getName());
intent.putExtra("email", contact.getEmail());
this.ctx.startActivity(intent);
}
}
@Override
public boolean onLongClick(View v) {
int position = getAdapterPosition();
Contact contact = this.contacts.get(position);
Toast.makeText(this.ctx, "position " + position, Toast.LENGTH_SHORT).show();
return true;
}
}
}