RecyclerView在设置点击事件时 如果不使用notifyDataSetChanged();来通知界面更新的话是不会主动调用onBindViewHolder(ViewHolder holder,int position)这个方法.而绑定点击事件需要在这里进行绑定并且将position传入进去进行相应的操作.如果我们进行移动,删除,添加,但是没有调用该方法的话,点击绑定的position就会和界面真正的position不一样.使用notifyDataSetChanged();会重新执行onBindViewHolder()所以不会出现错乱现象.但是RecyclerView.Adapter提供了以下几个通知界面更新的方法:
- notifyItemChanged(int position)
- notifyItemRangeChanged(int positionStart, int itemCount)
- notifyItemInserted(int position)
- notifyItemRangeInserted(int positionStart, int itemCount)
- notifyItemRemoved(int position)
- notifyItemRangeRemoved(int positionStart, int itemCount)
- notifyItemMoved(int fromPosition, int toPosition)
就是通知item改变,删除,添加和移动给Recyclerview,RecyclerView会做出相应的动画效果来显示这个状态的变更.使用这几个方法通知界面变更不会调用onBindViewHolder这个方法,不过我又希望能有动画效果.所以直接通过onBindViewHolder传入的posiition是不能用了有没有什么方法可以获得子item的posiition呢?然后我发现RecyclerView提供下面这个方法:</