Last active
December 6, 2022 22:54
-
-
Save gauravat16/e8e03496a4056829e65dede3c236da28 to your computer and use it in GitHub Desktop.
[Android] Add Context Menu to RecyclerView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Import Statements | |
public class ActivityName extends AppCompatActivity { | |
private RecyclerView mRecyclerView; | |
private RecyclerView.Adapter mAdapter; | |
private RecyclerView.LayoutManager mLayoutManager; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_view_birthdays); | |
//Recycle View | |
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); | |
mLayoutManager = new LinearLayoutManager(getApplicationContext()); | |
mRecyclerView.setLayoutManager(mLayoutManager); | |
mAdapter = new BirthdaysListAdapter(data, this); | |
mRecyclerView.setAdapter(mAdapter); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Import Statements | |
public class BirthdaysListAdapter extends RecyclerView.Adapter<BirthdaysListAdapter.ViewHolder> { | |
static Context ctx; | |
private List<typeOfData> Data; | |
public BirthdaysListAdapter(List<typeOfData> list, Context context) { | |
Data = list; | |
this.ctx = context; | |
} | |
BirthdaysListAdapter() { | |
} | |
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener { | |
public TextView name; | |
public TextView Birthday; | |
public ImageView colorAlphabet; | |
public TextView textInImg; | |
public ViewHolder(View v) { | |
super(v); | |
name = (TextView) v.findViewById(R.id.name); | |
Birthday = (TextView) v.findViewById(R.id.Birthday); | |
colorAlphabet = (ImageView) v.findViewById(R.id.colorAlphabet); | |
textInImg = (TextView) v.findViewById(R.id.textInImg); | |
v.setOnCreateContextMenuListener(this); //REGISTER ONCREATE MENU LISTENER | |
} | |
@Override | |
public void onCreateContextMenu(ContextMenu menu, View v //CREATE MENU BY THIS METHOD | |
ContextMenu.ContextMenuInfo menuInfo) { | |
MenuItem Edit = menu.add(Menu.NONE, 1, 1, "Edit"); | |
MenuItem Delete = menu.add(Menu.NONE, 2, 2, "Delete"); | |
Edit.setOnMenuItemClickListener(onEditMenu); | |
Delete.setOnMenuItemClickListener(onEditMenu); | |
} | |
//ADD AN ONMENUITEM LISTENER TO EXECUTE COMMANDS ONCLICK OF CONTEXT MENU TASK | |
private final MenuItem.OnMenuItemClickListener onEditMenu = new MenuItem.OnMenuItemClickListener() { | |
@Override | |
public boolean onMenuItemClick(MenuItem item) { | |
DBHandler dbHandler = new DBHandler(ctx); | |
List<WishMen> data = dbHandler.getWishmen(); | |
switch (item.getItemId()) { | |
case 1: | |
//Do stuff | |
break; | |
case 2: | |
//Do stuff | |
break; | |
} | |
return true; | |
} | |
}; | |
} | |
public List<ViewBirthdayModel> getData() { | |
return Data; | |
} | |
@Override | |
public long getItemId(int position) { | |
return super.getItemId(position); | |
} | |
@Override | |
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_view_birthdays, parent, false); | |
ViewHolder vh = new ViewHolder(view); | |
return vh; | |
} | |
@Override | |
public void onBindViewHolder(final ViewHolder holder, int position) { | |
holder.name.setText(Data.get(position).getMan().getName()); | |
holder.Birthday.setText(Data.get(position).getMan().getBday()); | |
holder.colorAlphabet.setBackgroundColor(Color.parseColor(Data.get(position).getColor())); | |
holder.textInImg.setText(String.valueOf(Data.get(position).getMan().getName().toUpperCase().charAt(0))); | |
} | |
@Override | |
public int getItemCount() { | |
return Data.size(); | |
} | |
private int position; | |
public int getPosition() { | |
return position; | |
} | |
public void setPosition(int position) { | |
this.position = position; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
any progress?