I have a recyclerView
in my app that contain a list of Menu and when i press one of them if will change items in another recyclerView
but when i open my activity noone of recyclerView
where there are the menu's are selected.
So the question is how can i open the activity and find the 1st item of the recyclerView
selected?
I was trying to simulate an click by Handler but it was making my app slower.
Here is the code from my Adapter :
public class RecyclerViewMenu extends RecyclerView.Adapter<RecyclerViewMenu.MenuViewHolder> {
private ArrayList<MenuConstructor> menuConstructors;
private OnItemClickListener onItemClickListener;
private int selected_position = -1;
public interface OnItemClickListener {
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
onItemClickListener = listener;
}
@NonNull
@Override
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.menucard,parent,false);
return new MenuViewHolder(v, onItemClickListener);
}
RecyclerViewMenu(ArrayList<MenuConstructor> menuList){
menuConstructors = menuList;
}
@Override
public void onBindViewHolder(@NonNull final MenuViewHolder holder, final int position) {
MenuConstructor currentItem = menuConstructors.get(position);
if (selected_position == position) {
holder.itemView.setBackgroundColor(Color.parseColor("#2e7d32"));
} else {
holder.itemView.setBackgroundColor(Color.parseColor(currentItem.getSfondoColor()));
}
holder.textView.setText(currentItem.getDesk());
holder.textView.setTextColor(Color.parseColor(currentItem.getFontColor()));
}
@Override
public int getItemCount() {
return menuConstructors.size();
}
public class MenuViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
MenuViewHolder(View itemView, final OnItemClickListener listener) {
super(itemView);
textView = itemView.findViewById(R.id.ButtonName);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
selected_position = position;
notifyDataSetChanged();
}
}
}
});
}
}
}
And here is a screenshot of my activity as you can see "CICCIO" is my first item of the recyclerView
but it was selected manually.
Have you tried this in your activity:
recyclerView.findViewHolderForAdapterPosition(0).itemView.performClick()
The variable selected_position
should be public in a Utils class and then you set selected_position = 0
in onCreate:
public class Utils {
public static final int selected_position = -1;
}
then you use it in onCreate Utils.selected_position = 0;
and in onBindViewHolder if (position == Utils.selected_position)
Of course you have to remove this line: private int selected_position = -1;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With