当前位置: 首页 > 知识库问答 >
问题:

回收站视图使最后添加的项目是选定的项目?

罗绪
2023-03-14

我有一个显示位图的水平循环视图。它的实现方式是在它下面有一个Imageview和一个recyclerview。当前选定的项目将显示在图像视图上。为选定的图像视图提供蓝色背景,以指示其已选定。我可以从“多媒体资料”中选择图像,每次选择新图像时,我都希望滚动到最后一个位置并选中该项目。

图像列表保存在数组列表中,每次添加新图像时,我都会将图像添加到列表并notifyDataChanged()。

当前,在绑定视图时,我会切换视图中蓝色背景的可见性

public void onBindViewHolder(最终MyRecycleServiceWholder持有者,int位置){}

但问题是,如果孩子不在屏幕上,绑定视图不会被调用,我也不会滚动到新位置。我通读了recycler视图的文档,不知道如何滚动到特定的子视图。我没有SmoothScrollTo方法,但我的问题是我在哪里触发它?

共有3个答案

陆翰藻
2023-03-14

使用RecycraView LayoutManager在位置滚动项目

recyclerView.getLayoutManager().scrollToPosition(position)

我忘记了处理计时部分,理想情况下,当适配器被识别为数据集更改时,应该调用它。

能翔宇
2023-03-14

只有滚动到该项目,才能创建视图。

你必须打电话

recyclerView.scrollToPosition(position)

位置在哪里

 recyclerView.getAdapter().size()

因此,该项目变得可见。

荣晨朗
2023-03-14

有一个解决办法:

>

  • 在您的RecycraView适配器中,添加一个变量selectedItem和一个方法setSseltedItem():

    private static int selectedItem = -1;
    
     ... ...
    
    public void setSelectedItem(int position)
    {
       selectedItem = position;
    }
    

    在您的onBindViewHolder(…) ,添加:

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) 
    {
       ... ...
    
       if(selectedItem == position)
          holder.itemView.setSelected(true);
    }   
    

    现在,您可以滚动到特定项目,并通过以下方式以编程方式将其设置为选中:

    myRecyclerViewAdapter.setSelectedItem(position_scrollTo);
    myRecyclerView.scrollToPosition(position_scrollTo);
    

    例如,要滚动到最后一个位置并将其选中,只需:

        int last_pos = myRecyclerViewAdapter.getItemCount() - 1;
        myRecyclerViewAdapter.setSelectedItem(last_pos);
        myRecyclerView.scrollToPosition(last_pos);
    


    [更新]

    要添加项目并使其被选中,您应该在适配器中有一个addItem(...)方法,它将项目添加到项目列表中。添加项目后,刷新列表并滚动到新添加/最新项目:

    myRecyclerViewAdapter.addItem(...);
    myRecyclerViewAdapter.notifyDataSetChanged();
    myRecyclerViewAdapter.setSelectedItem(myRecyclerViewAdapter.getItemCount() - 1); 
    myRecyclerView.scrollToPosition(myRecyclerViewAdapter.getItemCount() - 1);
    

    希望这有帮助!

  •  类似资料:
    • 我一直在尝试按照以下教程将选项菜单集成到我的listview中: [https://www.simplifiedcoding.net/create-options-menu-recyclerview-item-tutorial/] 我已经能够让菜单的图标出现在列表视图中的项目旁边,但是我无法点击它来访问弹出菜单。我试图在我的BindViewHolder(MyViewHolder持有者,int位置)

    • 我有一个从内部存储器加载图像的回收器视图。我想在单击时突出显示所选项。我试了很多方法,但都不起作用。实际上,我需要的是,当我在Recycler视图中单击任何项目时,该项目必须进入我的ArrayList,它也应该突出显示,当我单击或说unselect时,它必须再次变为正常。以下是我的代码: 这是我的适配器类:

    • 我有一个活动,在创建时,我创建了五个文件,然后读取这些文件并添加到我的recyclerview中。我还在我的recyclerview中添加了滑动功能。当一个项目被滑动时,它删除了recycler视图中该位置的单元格,同时也删除了我创建的文件。我面临的问题是,假设在我的recyclerview中有5个项目1、2、3、4和5,我滑动鼠标删除1,包含1的文件被删除,但在我的recyclerview中,当

    • 我正在开发一个消息应用程序,布局没有什么花哨的-布局顶部的,底部的和消息列表的,填充中间的空间。 我的问题是,当通过单击/按显示软键盘时,中最后一个可见项目的位置不会保持。例如,如果列表有20个项目,并且当软键盘未显示时最后一个可见的是项目12,当软键盘显示时,我仍然希望最后一个可见的是项目12。 我已经在清单和代码中尝试了adjustPan和adjustResize的组合,但没有解决问题。 有什

    • 在SiteMonitor V5中,系统利用JavaScript监测脚本从网站收集数据,每个站点均有一个默认视图,默认视图是该站点所有数据的汇总处理结果。客户可以通过配置过滤器,生成其他的视图从而观测同一个站点数据的某一部分数据的处理结果。 2.2.1 概念介绍 一个项目下可包含多个站点,一个站点下可包含多个视图(默认为一个默认视图)。 项目 通常设定为一个客户或一个品牌,每个项目可包含多个站点。如

    • 这是不是意味着我没有刷新我的适配器还是什么? @重写公共void onDeleteClick(int position){FoodInfo selectedItem; 食物适配器 } 这是我删除项目后的删除方法,它仍然存在于我的回收视图中,并在firebase中消失 我必须离开这个页面并再次访问,然后它只显示与firebase完全相同的项目 有人帮忙吗?