在回收站视图中滚动到顶部

时间:2016-01-01 03:25:45

标签: android navigation-drawer android-recyclerview

在某些情况下,我想通过我的脚本在我的导航抽屉(使用RecyclerView构建)中设置一个特定项目。所以我使用下面的代码

jsonData[i].getType().IsArray

问题是,当预期的项目不在视口中时(比如有人向下滚动到导航抽屉的底部),它会给出recyclerView.findViewHolderForPosition(1).itemView.performClick(); (我猜这是预期的行为,因为该项目被回收)。

任何人都可以建议我该怎么办?我想的一种方法是在调用上面的函数之前自动滚动到顶部,但我不确定这是否可行。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果视图持有者不可用(它在屏幕外 - 再循环),findViewHolderForPosition返回null是正确的。在这种情况下,你可以什么都不做。当用户滚动到视图中时,视图将显示新的外观,并且在此时调用绑定(在此之前,项目的视觉外观无关紧要......)

答案 1 :(得分:0)

如果我理解正确,您需要设置RecycleView的选定项目。您可以这样更改RecyclerView.Adapter

class YourModel{
   public boolean isSelected;
}


 public class CustomRecycleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

   List<YourModel> listData;

   // your View Holder
   class ViewHolder extends RecyclerView.ViewHolder{
        public View rootLayout; // your root item layout
        public ContentViewHolder(View itemView) {
        // get root layout
        }
   } 

  @Override
  public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        ViewHolder viewHolder = (ViewHolder)holder;
        if(listData.get(position).isSelected{
           // set selected like this:
           viewHolder.rootLayout.setSelected(true);
        }else{
           viewHolder.rootLayout.setSelected(false);
        }
   }

  public void setSelected(int position, boolean isSelected){
    listData.get(position).isSelected =  isSelected;
    notifyDataSetChanged();
  }
}

最后,在您的活动中使用此代码:

CustomRecycleAdapter recycleAdapter; // init it
recycleAdapter.setSelected(0, true);
相关问题