Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android RecyclerView select first Item

I'm using a RecyclerView to implement a NavigationDrawer.

I got click events working, but I can't figure out how to have the first item selected on App start and following that keep the selected item higlighted even if the drawer is not shown.

All I've been able to find is multi-selection in RecyclerView.

like image 867
Sebastian Rüttger Avatar asked May 11 '15 12:05

Sebastian Rüttger


1 Answers

I actually just implemented this in an app I am working on. So this method worked:

First create a variable to track the current selected position at the top of your adapter:

private int selectedItem;

Then in your Adapter constructor initiate the selectedItem value you would like:

public NavDrawerMenuListAdapter(Context context, List<NavDrawerItem> data, NavDrawerMenuListViewHolder.NavDrawerMenuClickInterface listener) {
        this.context = context;
        mLayoutInflater = LayoutInflater.from(context);
        this.navDrawerItems = data;
        this.listener = listener;
        selectedItem = 0;
    }

Here I use 0 as this is the first item in my menu.

Then in your onBindViewHolder(NavDrawerMenuListViewHolder holder, int position) just check whether your selectedItem == position and set the background of some view to a seleted background like so:

if (selectedItem == position) {
            holder.single_title_textview.setTextColor(0xff86872b);
            holder.nav_drawer_item_holder.setBackgroundColor(Color.DKGRAY);
        } 

Here I set the text color to green and give the Realativelayout parent a gray background on start. You can, of course, customize this in any way you like.

To implement a selection of an item and keep the state I use the following method:

public void selectTaskListItem(int pos) {

        int previousItem = selectedItem;
        selectedItem = pos;

        notifyItemChanged(previousItem);
        notifyItemChanged(pos);

    }

This method I usually call from the OnClick() method.

Hope this helps!.

like image 102
Smashing Avatar answered Sep 29 '22 11:09

Smashing