首先在Adapter里定义
public interface OnItemClickListener{
void onItemLongClick(View view,int pos);
}
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
在onBindViewHolder里:
if (onItemClickListener!=null){
holder.view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
onItemClickListener.onItemLongClick(holder.view,position);
return false;
}
});
}
在res定义menu的directory,在里面创建item_pop.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/unread"
android:title="标为未读" />
<item
android:id="@+id/top"
android:title="置顶聊天" />
<item
android:id="@+id/delete"
android:title="删除该聊天" />
</menu>
然后在activity中
private void initClick() {
userAdapter.setOnItemClickListener(new UserAdapter.OnItemClickListener() {
@Override
public void onItemLongClick(View view, int pos) {
PopupMenu popupMenu = new PopupMenu(getContext(), view);
popupMenu.getMenuInflater().inflate(R.menu.item_pop, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.unread:
Toast.makeText(getContext(), "123", Toast.LENGTH_SHORT).show();
break;
case R.id.top:
Toast.makeText(getContext(), "1234", Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
Toast.makeText(getContext(), "456", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return false;
}
});
popupMenu.show();
}
});
}