还是先上效果图,我们在查看小说目录时,可以看到正在阅读的章节字体为红色,其余章节字体为黑色。



主要解决方式来自于 https://blog.csdn.net/qq_34882161/article/details/54944188
<https://blog.csdn.net/qq_34882161/article/details/54944188>,感谢!


思路在于将当前章节的章节名传递给adapter,然后调用notifydata,此时会调用onBindViewHolder重新绘制,我们在这个函数中进行比较,把与传入的章节名相同的ViewHolder的章节名的字体颜色设置为红色,其余字体颜色为黑色。与上篇文章不同的是,这里当我点击其他章节时会关闭RecyclerView,因此我并没有使用lastView记录上一个章节的ViewHolder,只要每次打开RecyclerView时重新传入当前章节名就好了。
if (mBookChapter.equals(holder.tvChapter.getText())){
holder.tvChapter.setTextColor(mView.getResources().getColor(R.color.colorAccent));
}else{
holder.tvChapter.setTextColor(mView.getResources().getColor(R.color.black));; }

当我们按照上面写好代码后,可以看到章节名已经变为红色了。但是!当我们上下滑动一段距离然后再滑回来时,会偶尔出现章节名并没有出现改变颜色的情况。我们只需要调用RecyclerView的setItemViewCacheSize设置为0即可了。
directoryView.setItemViewCacheSize(0)
除此之外,我们还可以使用
directoryView.scrollToPosition(mBookIndex)

达到模拟滑动的效果,这样我们每次打开章节列表,就可以看到我们当前正在阅读的章节和周围其他的章节了。不过scrollToPosition只是让这个item滑动到我们可以看到的范围内,并不是使这个item处于最顶端,如果你想让item处于最顶端那就请用scrollToPositionWithOffset(postion,
0)吧~

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信