解決RecyclerView 出現(xiàn)ClassCastException

解決RecyclerView 出現(xiàn)ClassCastException

首先需要排除的時(shí)候 確實(shí)不是代碼的邏輯上的問題。

出現(xiàn)場景在于多種視圖的判斷既混合的布局加載。(ViewType >=2

會(huì)出現(xiàn)關(guān)于復(fù)用布局的類型轉(zhuǎn)換異常

當(dāng)然這種場景還有前提是快速滑動(dòng)且數(shù)據(jù)量達(dá)到一定的層次的時(shí)候。當(dāng)然發(fā)現(xiàn)在快速滑動(dòng)過程中,Item的狀態(tài)又發(fā)生了更新,然后你快速滑動(dòng)的時(shí)候,直接Crash了

當(dāng)時(shí)的我是一臉懵逼的。

后來baidu 和google之后,涉及到一些關(guān)于,小的細(xì)節(jié)性的優(yōu)化的問題,

把所有的條件判斷小于3的都用三目運(yùn)算 這個(gè)主要是針對那個(gè)RecyclerView中的

getItemViewType(int position)的判斷方法。

onCreateViewHolder 和onBindViewHolder的條件判斷 如果條件不多的情況下 用if-else(3個(gè)左右)判斷最好。但是多余一定時(shí)候 還是switch 更利于性能優(yōu)化。但其實(shí)switch 相對而言最大的弊端應(yīng)該是判斷的類型有限吧。不如if-else靈活

if else是一條比較指令,需要遍歷條件分支直到命中條件

swtich是一張地址表,而只需訪問對應(yīng)索引號(hào)的表項(xiàng)就能定位分支,所以switch有點(diǎn)以空間換時(shí)間的意思。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容