最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android RecyclerView滾動定位

 更新時間:2017年01月23日 11:23:31   作者:M家杰  
這篇文章主要為大家詳細介紹了Android RecyclerView滾動定位的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

概述
RecyclerView在安卓開發(fā)中非常實用,而且簡單易用,但是在實際開發(fā)中一直有一個問題困擾著我,就是定位問題,實際的項目中總是會遇到這樣的需求:檢索RecyclerView的某一項(各個項的高度不確定),然后定位這一項,將它顯示在頂部。用RecyclerView的默認移動的方法并不能實現(xiàn)這一點(個人感覺官方可能出于性能考慮才不實現(xiàn)這一點)。這篇博客就講解下我個人是如何實現(xiàn)這個需求的。

Demo演示

敲代碼前的思考

RecyclerView提供的用于控制移動的方法有2個
- scrollToPosition(int)
這個方法的作用是顯示指定項,就是把你想置頂?shù)捻楋@示出來,但是在屏幕的什么位置是不管的,只要那一項現(xiàn)在看得到了,那它就罷工了!
- scrollBy(int x,int y)
這個方法是自己去控制移動的距離,單位應該是像素。

使用scrollToPosition時,移動到前面的項時,它默認會將要顯示的項置頂,但是移動到后面的項時,位置就說不好了(看它心情!)一般會顯示在最后一個。用過的應該都有所了解。
使用scrollBy時就需要自己計算高度或者寬度。在動態(tài)的布局中且各項樣式高度可能都不一樣的情況下,自己計算高度是很有難度的。

上面說了這么多廢話,結論就是這2個方法都不能很好解決問題,但是,當他們2個結合使用的時候,我們的問題就變的好解決很多了!

思路是:先用scrollToPosition,將要置頂?shù)捻椣纫苿语@示出來,然后計算這一項離頂部的距離,用scrollBy完成最后的100米!

關鍵代碼

先傳入要置頂?shù)趲醉?,然后區(qū)分情況處理

 private void moveToPosition(int n) {
    //先從RecyclerView的LayoutManager中獲取第一項和最后一項的Position
    int firstItem = mLinearLayoutManager.findFirstVisibleItemPosition();
    int lastItem = mLinearLayoutManager.findLastVisibleItemPosition();
    //然后區(qū)分情況
    if (n <= firstItem ){
    //當要置頂?shù)捻椩诋斍帮@示的第一個項的前面時
      mRecyclerView.scrollToPosition(n);
    }else if ( n <= lastItem ){
    //當要置頂?shù)捻椧呀浽谄聊簧巷@示時
      int top = mRecyclerView.getChildAt(n - firstItem).getTop();
      mRecyclerView.scrollBy(0, top);
    }else{
    //當要置頂?shù)捻椩诋斍帮@示的最后一項的后面時
      mRecyclerView.scrollToPosition(n);
      //這里這個變量是用在RecyclerView滾動監(jiān)聽里面的
      move = true;
    }

  }

RecyclerView滾動監(jiān)聽

class RecyclerViewListener extends RecyclerView.OnScrollListener{
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
      super.onScrolled(recyclerView, dx, dy);
      //在這里進行第二次滾動(最后的100米?。?
      if (move ){
        move = false;
        //獲取要置頂?shù)捻椩诋斍捌聊坏奈恢?,mIndex是記錄的要置頂項在RecyclerView中的位置
        int n = mIndex - mLinearLayoutManager.findFirstVisibleItemPosition();
        if ( 0 <= n && n < mRecyclerView.getChildCount()){
          //獲取要置頂?shù)捻楉敳侩xRecyclerView頂部的距離
          int top = mRecyclerView.getChildAt(n).getTop();
          //最后的移動
          mRecyclerView.scrollBy(0, top);
        }
      }
    }
  }

Demo下載

[CSDN]:http://xiazai.jb51.net/201701/yuanma/RecyclerViewLocation(jb51.net).rar

[GitHub]:https://github.com/tyzlmjj/AndroidUI/tree/master/RecyclerViewLocation

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解Android ContentProvider的基本原理和使用

    詳解Android ContentProvider的基本原理和使用

    ContentProvider(內容提供者)是 Android 的四大組件之一,管理 Android 以結構化方式存放的數(shù)據(jù),以相對安全的方式封裝數(shù)據(jù)(表)并且提供簡易的處理機制和統(tǒng)一的訪問接口供其他程序調用
    2021-06-06
  • Android消息通知Notification常用方法(發(fā)送消息和接收消息)

    Android消息通知Notification常用方法(發(fā)送消息和接收消息)

    最近在做消息通知類Notification的相關業(yè)務,利用閑暇時間總結一下,主要分為兩部分來記錄:發(fā)送消息和接收消息,對Android消息通知相關知識感興趣的朋友一起看看吧
    2024-02-02
  • Android實現(xiàn)簡易記事本

    Android實現(xiàn)簡易記事本

    這篇文章主要為大家詳細介紹了Android實現(xiàn)簡易記事本,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Flutter組件適配方法實現(xiàn)詳解

    Flutter組件適配方法實現(xiàn)詳解

    在寫flutter的代碼的時候為了讓組件大小適配屏幕使用了flutter_screenUtil插件。在調試的時候是正常的,可以適配屏幕。但是打包之后就會失去效果,這篇文章主要介紹了Flutter組件適配方法實現(xiàn)
    2022-10-10
  • Kotlin操作符重載實例詳解

    Kotlin操作符重載實例詳解

    Kotlin允許我們?yōu)樽约旱念愋吞峁╊A定義的一組操作符的實現(xiàn),下面這篇文章主要給大家介紹了關于Kotlin操作符重載的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Android開發(fā)筆記之:Log圖文詳解(Log.v,Log.d,Log.i,Log.w,Log.e)

    Android開發(fā)筆記之:Log圖文詳解(Log.v,Log.d,Log.i,Log.w,Log.e)

    本篇文章是對Android中的Log進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Android實現(xiàn)價格走勢自定義曲線圖

    Android實現(xiàn)價格走勢自定義曲線圖

    本篇文章主要介紹了Android實現(xiàn)價格走勢曲線圖,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • Android開發(fā)之ImageLoader本地緩存

    Android開發(fā)之ImageLoader本地緩存

    ImageLoader是一個圖片緩存的開源庫,提供了強大的圖片緩存機制,很多開發(fā)者都在使用,今天給大家介紹Android開發(fā)之ImageLoader本地緩存。對imageloader本地緩存相關知識感興趣的朋友一起學習吧
    2016-01-01
  • Android開發(fā)實現(xiàn)的計時器功能示例

    Android開發(fā)實現(xiàn)的計時器功能示例

    這篇文章主要介紹了Android開發(fā)實現(xiàn)的計時器功能,涉及Android開發(fā)中的計時器相關組件布局、調用、事件響應等相關操作技巧,需要的朋友可以參考下
    2019-04-04
  • Android View背景選擇器編寫技巧

    Android View背景選擇器編寫技巧

    本文主要介紹了Android View背景選擇器編寫技巧,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

城步| 胶州市| 平南县| 图木舒克市| 邵武市| 永福县| 浏阳市| 鸡西市| 榆社县| 乡城县| 嵊州市| 昌图县| 波密县| 漳州市| 淳化县| 上虞市| 神木县| 阳春市| 方正县| 灵山县| 衡阳县| 天等县| 兰溪市| 鄢陵县| 德阳市| 曲水县| 平凉市| 渑池县| 丹棱县| 天峻县| 黑山县| 漳浦县| 定州市| 杂多县| 浮山县| 宁河县| 遵义县| 潮安县| 锡林郭勒盟| 普格县| 天气|