RecyclerVie滾動(dòng)到底部失敗

因?yàn)橛玫搅谁h(huán)信的即時(shí)通訊。界面呢都是自己寫的。到后面發(fā)現(xiàn)一個(gè)問題,每次進(jìn)入聊天的Activity會(huì)從本地加載聊天記錄,案后調(diào)用Adapter的notifyDataSetChanged(),然后調(diào)用

mMessagerecyclerview.smoothScrollToPosition(mMessageList.size() - 1);

以為就能順利滾動(dòng)到底部去,但是事實(shí)卻并不是,他確實(shí)有滾動(dòng),然而只是滾動(dòng)到大概倒數(shù)第三左右的位置,消息當(dāng)時(shí)大概十條多一點(diǎn)。后邊去看了一下環(huán)信官方的Demo。他的讀取消息滾動(dòng)時(shí)放到Fragment的,在EaseBaseFragment的onActivityCreated里面調(diào)用setupView方法調(diào)用onMessageListInit再調(diào)用EaseChatMessageList的init的

refreshSelectLast();

處理的滾動(dòng)到最后。于是我猜想他是在onActivityCreated中才調(diào)用的這些方法。會(huì)不會(huì)我在Activity的onactivitycreate從本地加載數(shù)據(jù)太快導(dǎo)致界面還沒繪制完成就調(diào)用了recyclerView的滾動(dòng),于是加了個(gè)延遲進(jìn)行處理。似乎達(dá)到了想要的效果。

  new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (mMessageList != null && !mMessageList.isEmpty())
                mMessagerecyclerview.smoothScrollToPosition(mMessageList.size() - 1);
        }
    },500);

覺得加一個(gè)500ms的延遲是不是不太好,想監(jiān)聽界面繪制完成,似乎只有
onWindowFocusChanged 可以達(dá)到效果。但是這個(gè)方法還是有問題。會(huì)經(jīng)常被調(diào)用不僅僅在界面繪制完成。比如切換到其他activity。感覺不太好。所以暫時(shí)先用handler 做了個(gè)延遲的方式處理。

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

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,063評(píng)論 25 709
  • 半小時(shí)前我興致勃勃打開電腦敲出影評(píng)的第一句話,三分鐘后,它自動(dòng)關(guān)機(jī),而電腦線神秘地失蹤了。 為此我翻遍客廳、主臥、...
    指尖上的獨(dú)角獸閱讀 286評(píng)論 0 0

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