【问题标题】:Android - RecyclerView: Add new item and select itAndroid - RecyclerView:添加新项目并选择它
【发布时间】:2017-01-13 23:58:21
【问题描述】:

我在片段中有一个 RecyclerView 并且项目是可选择的。我通过在 RvAdapter 中创建变量 int focusedItem = 0; 和在 onBindViewHolder 方法中创建变量 holder.itemView.setSelected(focusedItem == position); 解决了这个问题。这是一个item的onClick方法:

holder.itemView.setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(View v) {
        notifyItemChanged(focusedItem);
        focusedItem = position;
        notifyItemChanged(focusedItem);
    }
});

在列表项的 XML 文件中,我使用了一个选择器作为背景,它改变了所选项目的背景颜色。这工作正常,但我想将项目添加到回收站视图中,添加项目后它不再那么好用了。

这是我向 rv 添加项目的方式(在片段类中):

entries.add(0, new ...);
rvAdapter.notifyItemInserted(0);
recyclerView.scrollToPosition(0);

所以我在 ArrayList 的第一个位置添加了一个项目。然后我通知适配器,在第一个位置插入了一个新项目,然后我滚动到那个新项目。现在我希望自动选择新项目。有没有办法做到这一点?我的想法是设置focusedItem = 0,但我不知道如何在片段类中编辑这个值。还是有类似 onItemInserted 的东西,我可以将这个变量设置为 0?

【问题讨论】:

    标签: android android-fragments android-recyclerview


    【解决方案1】:

    在调用notify.. 之前将focusedItem 设置为0。稍后将调用onBindViewHolder 导致项目显示为选中状态。

    entries.add(0, new ...);
    focusedItem = 0;
    rvAdapter.notifyItemInserted(0);
    recyclerView.scrollToPosition(0);
    

    编辑:

    所以你在Fragment 中定义了focusedItem 而不是Adapter?最好将其移至 Adapter 并添加 getter/setter 方法。

    【讨论】:

      【解决方案2】:

      @Roman Kolomenskii 的想法是将 focusedItem 变量放在片段类中,而不是放在 RvAdapter 类中。这是个好主意,而且效果很好。

      所以在我的 Fragment 类中我有public static int focusedItem = 0;,这是我添加项目时的代码:

      int oldFocusedItem = focusedItem;
      focusedItem = 0;
      rvAdapter.notifyItemInserted(0);
      rvAdapter.notifyItemChanged(oldFocusedItem+1);
      recyclerView.scrollToPosition(0);
      

      我必须存储最新的 selectedItem,因为我必须通知适配器,该 item + 1(因为之前有一个新项目)已更改,因为它必须失去选择。然后我将focusedItem 设置为0。在RvAdapter 类中,我使用MyFragment.focusedItem 来获取所选项目。

      【讨论】:

        猜你喜欢
        • 2016-01-16
        • 2012-11-29
        • 2014-01-01
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        • 2022-12-23
        • 2018-11-14
        相关资源
        最近更新 更多