安卓爬坑指南之Recylerview

本文主要針對兩個問題進(jìn)行說明:

  • 橫向rv和viewpager滾動沖突
  • rv滾動到底部監(jiān)聽

首先我們寫一個自定義的rv

public class DefRecylerView extends RecyclerView {
    
    public DefRecylerView(Context context) {
        super(context);
    }

    public DefRecylerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public DefRecylerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
}
  1. rv恬吕、viewpager滾動沖突

當(dāng)遇到外層viewpager里面有一個橫向滾動的rv熏版,為防止rv滾動到最右側(cè)時觸發(fā)viewpager的滾動我們需要這樣做:

    private ViewPager viewPager = null;

    public void setViewPager(ViewPager viewPager) {
        this.viewPager = viewPager;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (viewPager != null) {
            getParent().requestDisallowInterceptTouchEvent(true);
        }
        return super.dispatchTouchEvent(ev);
    }

我們在自定義的rv中重寫dispatchTouchEvent方法,最為核心的一句代碼為:
getParent().requestDisallowInterceptTouchEvent(true);
意思是當(dāng)外層view是viewpager時番捂,我們?nèi)∠鹶iewpager對滾動事件的攔截摸袁,讓滾動事件繼續(xù)往下傳遞到rv惕虑,從而實(shí)現(xiàn)了橫向rv滾動到最右側(cè)時不觸發(fā)viewpager的滾動。

  1. rv滾動到底部監(jiān)聽

自定義rv中重寫onScroll方法,定義一個回調(diào)接口睛挚,當(dāng)rv滾動到底部時回調(diào)通知邪蛔,適用于列表數(shù)據(jù)加載更多操作。

回調(diào)接口:

public interface OnSlideBottomListener {
    /**
     * 滾動到底部
     */
    void onSlideBottom();
}

重寫onScroll:

    private OnSlideBottomListener onSlideBottomListener = null;

    public void setOnSlideBottomListener(OnSlideBottomListener onSlideBottomListener) {
        this.onSlideBottomListener = onSlideBottomListener;
    }
    
    @Override
    public void onScrolled(int dx, int dy) {
        if (isSlideToBottom()) {
            if (onSlideBottomListener != null) {
                onSlideBottomListener.onSlideBottom();
            }
        }
    }

    /**
     * 是否滑動到底部
     */
    public boolean isSlideToBottom() {
        if (this.getLayoutManager() instanceof LinearLayoutManager) {
            LinearLayoutManager layoutManager = (LinearLayoutManager) this.getLayoutManager();
            if (layoutManager.getOrientation() == LinearLayoutManager.VERTICAL) {
                return this != null
                        && this.computeVerticalScrollExtent() + this.computeVerticalScrollOffset()
                        >= this.computeVerticalScrollRange();
            } else {
                return this != null
                        && this.computeHorizontalScrollExtent() + this.computeHorizontalScrollOffset()
                        >= this.computeHorizontalScrollRange();
            }
        } else if(this.getLayoutManager() instanceof StaggeredGridLayoutManager){
            StaggeredGridLayoutManager layoutManager = (StaggeredGridLayoutManager) this.getLayoutManager();
            if (layoutManager.getOrientation() == StaggeredGridLayoutManager.VERTICAL) {
                return this != null
                        && this.computeVerticalScrollExtent() + this.computeVerticalScrollOffset()
                        >= this.computeVerticalScrollRange();
            } else {
                return this != null
                        && this.computeHorizontalScrollExtent() + this.computeHorizontalScrollOffset()
                        >= this.computeHorizontalScrollRange();
            }
        }

        return false;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扎狱,一起剝皮案震驚了整個濱河市侧到,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淤击,老刑警劉巖匠抗,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異污抬,居然都是意外死亡汞贸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矢腻,“玉大人门驾,你說我怎么就攤上這事√けぃ” “怎么了猎唁?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長顷蟆。 經(jīng)常有香客問我,道長腐魂,這世上最難降的妖魔是什么帐偎? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蛔屹,結(jié)果婚禮上削樊,老公的妹妹穿的比我還像新娘。我一直安慰自己兔毒,他們只是感情好漫贞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著育叁,像睡著了一般迅脐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪嗽,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天谴蔑,我揣著相機(jī)與錄音,去河邊找鬼龟梦。 笑死隐锭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的计贰。 我是一名探鬼主播钦睡,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼躁倒!你這毒婦竟也來了荞怒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤樱溉,失蹤者是張志新(化名)和其女友劉穎挣输,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體福贞,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撩嚼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片完丽。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恋技,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逻族,到底是詐尸還是另有隱情蜻底,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布聘鳞,位于F島的核電站薄辅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抠璃。R本人自食惡果不足惜站楚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搏嗡。 院中可真熱鬧窿春,春花似錦、人聲如沸采盒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磅氨。三九已至尺栖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悍赢,已是汗流浹背决瞳。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留左权,地道東北人皮胡。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像赏迟,于是被迫代替她去往敵國和親屡贺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,112評論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,759評論 22 665
  • 原文鏈接:https://github.com/opendigg/awesome-github-android-u...
    IM魂影閱讀 32,931評論 6 472
  • 很久以前锌杀,我都還未感覺這刺骨的痛心甩栈,直至你的出現(xiàn),我才知道了什么叫做喜歡一個人是想讓她過得很快樂糕再。我是一個不怎么喜...
    南央浮城閱讀 224評論 0 1
  • 最近看了《末代皇帝》量没,片中溥儀皇帝在亂世中成長,處處身不由己突想,不禁讓人惋惜殴蹄。不過他的政治敏感度也真是讓人堪憂究抓。三歲...
    Anna亞男閱讀 226評論 0 2