Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AbsolutelySaurabh/8c146a75000ead9519a2d80e2f4ca146 to your computer and use it in GitHub Desktop.
Save AbsolutelySaurabh/8c146a75000ead9519a2d80e2f4ca146 to your computer and use it in GitHub Desktop.
How to highlight selected item in RecyclerView
package com.appsomniac.swagger.data.adapter;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.graphics.Color;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.appsomniac.swagger.R;
import com.appsomniac.swagger.base.MainActivity;
import com.appsomniac.swagger.data.model.Drawer;
import com.appsomniac.swagger.data.model.TodayBookingsHome;
import com.appsomniac.swagger.data.viewHolder.DrawerListViewHolder;
import com.appsomniac.swagger.data.viewHolder.TodayBookingViewHolder;
import com.appsomniac.swagger.fragment.BookingsFragment;
import com.appsomniac.swagger.fragment.EnquiryFragment;
import com.appsomniac.swagger.fragment.HomeFragment;
import com.appsomniac.swagger.fragment.LiveStatusFragment;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import java.nio.file.attribute.PosixFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class DrawerListAdapter extends RecyclerView.Adapter<DrawerListViewHolder> {
private ArrayList<Drawer> al_drawers;
private Context mContext;
public static String EXTRA_MESSAGE = "";
public MainActivity activity;
public int selected_position = 0;
//fragment tags
public static String TAG = "Home";
public DrawerListAdapter(Context context, ArrayList<Drawer> al_drawers, MainActivity activity) {
this.al_drawers = al_drawers;
this.mContext = context;
this.activity = activity;
}
@Override
public DrawerListViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
return new DrawerListViewHolder(LayoutInflater.from(viewGroup.getContext()), viewGroup, position, al_drawers, mContext);
}
@Override
public void onBindViewHolder(final DrawerListViewHolder holder, final int position) {
if(position == 0){
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.home);
requestOptions.error(R.drawable.home);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(position).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
}else
if(position == 1){
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.calendar_grey);
requestOptions.error(R.drawable.calendar_grey);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(position).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
}else
if(position == 2){
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.live_grey);
requestOptions.error(R.drawable.live_grey);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(position).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
}else
if(position == 3){
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.enquiry_grey);
requestOptions.error(R.drawable.enquiry_grey);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(position).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
}
holder.drawerTitle.setText(al_drawers.get(position).getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = activity.getSupportFragmentManager().beginTransaction() ;
if(position == 0){
TAG = "Home";
al_drawers.get(0).setImageUrl(String.valueOf(R.drawable.home));
al_drawers.get(1).setImageUrl(String.valueOf(R.drawable.calendar_grey));
al_drawers.get(2).setImageUrl(String.valueOf(R.drawable.live_grey));
al_drawers.get(3).setImageUrl(String.valueOf(R.drawable.enquiry_grey));
al_drawers.get(0).setTextColour("#FFFFFF");
al_drawers.get(1).setTextColour("#90A4AE");
al_drawers.get(2).setTextColour("#90A4AE");
al_drawers.get(3).setTextColour("#90A4AE");
// Updating old as well as new positions
notifyItemChanged(selected_position);
selected_position = position;
notifyItemChanged(selected_position);
HomeFragment homeFragment = new HomeFragment();
fragmentTransaction.replace(R.id.framelayout_right, homeFragment, TAG);
fragmentTransaction.commit();
//changin icon to white
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.home);
requestOptions.error(R.drawable.home);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(0).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
notifyDataSetChanged();
}else
if(position == 1){
TAG = "Bookings";
al_drawers.get(1).setImageUrl(String.valueOf(R.drawable.calendar));
al_drawers.get(0).setImageUrl(String.valueOf(R.drawable.home_grey));
al_drawers.get(2).setImageUrl(String.valueOf(R.drawable.live_grey));
al_drawers.get(3).setImageUrl(String.valueOf(R.drawable.enquiry_grey));
al_drawers.get(1).setTextColour("#FFFFFF");
al_drawers.get(3).setTextColour("#90A4AE");
al_drawers.get(2).setTextColour("#90A4AE");
al_drawers.get(0).setTextColour("#90A4AE");
// Updating old as well as new positions
notifyItemChanged(selected_position);
selected_position = position;
notifyItemChanged(selected_position);
BookingsFragment bookingsFragment = new BookingsFragment();
fragmentTransaction.replace(R.id.framelayout_right, bookingsFragment, TAG);
fragmentTransaction.commit();
//changin icon to white
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.calendar);
requestOptions.error(R.drawable.calendar);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(1).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
//changing text colour
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
notifyDataSetChanged();
}else
if(position == 2){
TAG = "LiveStatus";
al_drawers.get(2).setImageUrl(String.valueOf(R.drawable.live));
al_drawers.get(0).setImageUrl(String.valueOf(R.drawable.home_grey));
al_drawers.get(1).setImageUrl(String.valueOf(R.drawable.calendar_grey));
al_drawers.get(3).setImageUrl(String.valueOf(R.drawable.enquiry_grey));
al_drawers.get(2).setTextColour("#FFFFFF");
al_drawers.get(1).setTextColour("#90A4AE");
al_drawers.get(3).setTextColour("#90A4AE");
al_drawers.get(0).setTextColour("#90A4AE");
// Updating old as well as new positions
notifyItemChanged(selected_position);
selected_position = position;
notifyItemChanged(selected_position);
LiveStatusFragment liveStatusFragment = new LiveStatusFragment();
fragmentTransaction.replace(R.id.framelayout_right, liveStatusFragment, TAG);
fragmentTransaction.commit();
//changin icon to white
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.live);
requestOptions.error(R.drawable.live);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(2).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
//changing text colour
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
notifyDataSetChanged();
}else
if(position == 3){
TAG = "Enquiry";
al_drawers.get(3).setImageUrl(String.valueOf(R.drawable.enquiry));
al_drawers.get(1).setImageUrl(String.valueOf(R.drawable.calendar_grey));
al_drawers.get(2).setImageUrl(String.valueOf(R.drawable.live_grey));
al_drawers.get(0).setImageUrl(String.valueOf(R.drawable.home_grey));
al_drawers.get(3).setTextColour("#FFFFFF");
al_drawers.get(1).setTextColour("#90A4AE");
al_drawers.get(2).setTextColour("#90A4AE");
al_drawers.get(0).setTextColour("#90A4AE");
//000000
// Updating old as well as new positions
notifyItemChanged(selected_position);
selected_position = position;
notifyItemChanged(selected_position);
EnquiryFragment enquiryFragment = new EnquiryFragment();
fragmentTransaction.replace(R.id.framelayout_right, enquiryFragment, TAG);
fragmentTransaction.commit();
//changin icon to white
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.enquiry);
requestOptions.error(R.drawable.enquiry);
Glide.with(mContext).asBitmap().load(Integer.parseInt(al_drawers.get(3).getImageUrl()))
.apply(requestOptions).thumbnail(0.5f).into(holder.drawerIcon);
//changing text colour
holder.drawerTitle.setTextColor(Color.parseColor(al_drawers.get(position).getTextColour()));
notifyDataSetChanged();
}
}
});
}
@Override
public int getItemCount() {
return (null != al_drawers ? al_drawers.size() : 0);
}
}
@oluwabajio
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment