Android RecyclerView 选择第一个项目

Posted

技术标签:

【中文标题】Android RecyclerView 选择第一个项目【英文标题】:Android RecyclerView select first Item 【发布时间】:2015-07-21 23:20:46 【问题描述】:

我正在使用 RecyclerView 来实现 NavigationDrawer。

我得到了点击事件的工作,但我不知道如何在应用程序启动时选择第一个项目,然后即使未显示抽屉也保持选中的项目高亮。

我只能在 RecyclerView 中找到多项选择。

【问题讨论】:

添加你的recyclerview和adapter的代码,等等,看看我们能如何帮助你,) @Smashing 已经解决了我的问题,它有效:) 【参考方案1】:

我实际上只是在我正在开发的应用程序中实现了这一点。所以这个方法奏效了:

首先创建一个变量来跟踪适配器顶部的当前选定位置:

private int selectedItem;

然后在您的 Adapter 构造函数中启动您想要的 selectedItem 值:

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;
    

这里我使用 0,因为这是我菜单中的第一项。

然后在您的onBindViewHolder(NavDrawerMenuListViewHolder holder, int position) 中检查您的selectedItem == position 是否并将某些视图的背景设置为选定的背景,如下所示:

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

在这里,我将文本颜色设置为绿色,并在开始时为 Realativelayout 父级设置灰色背景。当然,您可以以任何您喜欢的方式对其进行自定义。

为了实现对项目的选择并保持状态,我使用以下方法:

public void selectTaskListItem(int pos) 

        int previousItem = selectedItem;
        selectedItem = pos;

        notifyItemChanged(previousItem);
        notifyItemChanged(pos);

    

这个方法我通常从 OnClick() 方法中调用。

希望这会有所帮助!

【讨论】:

这很好用,非常感谢你:) 遗憾的是我还不能为你的答案投票,我仍然缺乏声誉 这是错误的方式!视图项应该有一个显示其状态的背景项。 请随时提供指向“正确”方式的链接。所有 *** 答案都有不同的版本。这个对我有用。 @drindt 您还没有提供任何指向正确方式的链接吗? see ***.com/questions/2038040/… @drindt 可能意味着您需要使用选择器并使用 state_selected 来更改列表状态中的项目

以上是关于Android RecyclerView 选择第一个项目的主要内容,如果未能解决你的问题,请参考以下文章

如何用RecyclerView android选择一个单选按钮?

Android——实现RecyclerView左侧滑删除与右侧滑选择

RecyclerView 项中的背景选择器

Android-Recyclerview-使用分割线

RecyclerView:错误的滚动效果(Android)

Recyclerview在Android中notifyItemChanged后防止触摸事件