設置RecyclerView某Item背景色

還是先上效果圖,我們在查看小說目錄時,可以看到正在閱讀的章節字體爲紅色,其餘章節字體爲黑色。

主要解決方式來自於 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)吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章