Android RecyclerView使用入門

      網友投稿 859 2022-05-30

      RecyclerView使用入門

      本文介紹RecyclerView的使用入門。這里給出一種比較常見的使用方式。

      想必讀者朋友對列表的表現形式已經不再陌生。手機上有聯系人列表,文件列表,短信列表等等。

      本文講述的是在Android開發中用RecyclerView來實現列表效果。

      使用步驟

      引入RecyclerView

      在app的build.gradle文件中添加引用。我們使用的是androidx包。

      dependencies { // ... implementation 'androidx.recyclerview:recyclerview:1.1.0' }

      數據準備

      先確定一下要顯示什么樣的數據。是用戶信息,聯系人,或是文件。這里以字符為例。

      寫代碼前,我們先考慮一下需求,就是要如何顯示,怎么顯示數據。日常工作中,一般會有UI效果圖。本文中的美術設計就由我們自己發揮了。

      Android RecyclerView使用入門

      比如顯示 a 97。

      ViewHolder與layout

      現在要顯示的數據已經確定了。來設計UI表現。layout與ViewHolder緊密相關。在設計Adapter類前,先寫ViewHolder類會比較好。

      新建定義item(列表子項)的布局文件item_letter.xml。

      這里使用內部類,把ViewHolder類寫在activity類里面。

      private class VH extends RecyclerView.ViewHolder { TextView tv1; TextView tv2; public VH(@NonNull View itemView) { super(itemView); tv1 = itemView.findViewById(R.id.tv1); tv2 = itemView.findViewById(R.id.tv2); } }

      從上面可以看出,ViewHolder和item的layout是緊密相關的。

      layout里面的id寫的比較簡單。實際項目中可以給一些更有意義的id命名。

      在activity的layout中,添加RecyclerView。

      設計Adapter

      設計一個適配器繼承自RecyclerView.Adapter

      這里的VH是我們上面寫好的ViewHolder。

      LetterAdapter中持有它自己的數據列表。需要實現3個方法。

      onCreateViewHolder方法,要求返回VH對象。

      這里就是創建VH對象并返回。而VH構造器要求傳入一個View,我們利用LayoutInflater創建一個view給它。當然,創建的根據就是前面設計好的item_letter。

      onBindViewHolder是把數據交給對應的VH來顯示。

      getItemCount方法要求返回數據的數量。

      private class LetterAdapter extends RecyclerView.Adapter { private List dataList; public LetterAdapter(List dataList) { this.dataList = dataList; } @NonNull @Override public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { return new VH(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_letter, parent, false)); } @Override public void onBindViewHolder(@NonNull VH holder, int position) { Character c = dataList.get(position); holder.tv1.setText(c.toString()); holder.tv2.setText(String.valueOf(Integer.valueOf(c))); } @Override public int getItemCount() { return dataList.size(); } }

      粗心大意的時候,可能會忘記初始化adapter里的dataList。報一個null pointer異常。

      設置RecyclerView

      在Activity的onCreate方法里進行了初始化。

      RecyclerView需要2項設置,適配器與LayoutManager。適配器就是我們上面定的那個。

      LayoutManager這里用LinearLayoutManager,指定為垂直方向,這樣我們會得到一個上下滑動的列表。

      List characterList = new ArrayList<>(); for (char c = 'a'; c <= 'z'; c++) { characterList.add(c); } mLetterAdapter = new LetterAdapter(characterList); RecyclerView letterReView = findViewById(R.id.re_view); letterReView.setAdapter(mLetterAdapter); letterReView.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false));

      觀察運行結果

      運行到手機或者模擬器上,打開這個activity。有的朋友就發現,為啥屏幕里一個子項item就占滿了整個屏幕?

      因為我們前面設置的item占滿屏幕。回到item_letter.xml,看一下根layout的設置。

      把layout_height="match_parent"里的設置改為wrap_content。

      重新編譯運行一下再看看結果。

      也可以給根layout設置固定的高度。具體視美術設計和需求而定。

      小結

      到這里我們掌握了RecyclerView的基本使用方式。

      接下來還要了解如何自定義它的表現形式。

      例如點擊或長按item的反應;拖動調整順序,側滑刪除;item之間添加分割線;增/刪/改數據;使用瀑布流樣式等等。也可以查看滑動距離。

      RecyclerView使用了適配器模式。

      可以查看一個使用示例,顯示一列數據。如果要顯示不同類型的數據,這里有實現方式。

      可以參考官方的RecyclerView文檔。

      工程地址AndroidTutorial

      更多請查看 https://www.an.rustfisher.com/

      Android

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Pandas中字符串處理
      下一篇:學習Node的基礎知識-總結
      相關文章
      亚洲AV日韩AV一区二区三曲| mm1313亚洲国产精品无码试看| 日韩精品电影一区亚洲| 亚洲AV一二三区成人影片| 亚洲综合综合在线| 亚洲网址在线观看你懂的| 久久精品国产亚洲香蕉| 亚洲av永久无码精品古装片| 亚洲精品~无码抽插| 亚洲国产成人高清在线观看 | 亚洲AV综合色区无码另类小说| 一本色道久久综合亚洲精品高清 | 亚洲精品在线免费观看视频| 666精品国产精品亚洲 | 久久亚洲美女精品国产精品| 亚洲av无码国产精品色午夜字幕 | 国产亚洲玖玖玖在线观看| 亚洲看片无码在线视频 | 亚洲精品无码乱码成人| 亚洲av午夜福利精品一区| 亚洲国产精品不卡在线电影| 亚洲va久久久噜噜噜久久男同| 亚洲中文字幕无码久久精品1| 国产亚洲玖玖玖在线观看| 亚洲日韩一区精品射精| 91情国产l精品国产亚洲区| 亚洲网站免费观看| avtt天堂网手机版亚洲| 亚洲人片在线观看天堂无码| 无码天堂亚洲国产AV| 亚洲精品天堂成人片?V在线播放| 国产午夜亚洲精品午夜鲁丝片| 国产亚洲一区二区手机在线观看 | 亚洲精品夜夜夜妓女网| 亚洲av无码成人黄网站在线观看 | 一级毛片直播亚洲| 丝袜熟女国偷自产中文字幕亚洲| 亚洲欧洲日产国码无码网站| 亚洲av日韩av天堂影片精品| 亚洲午夜久久久久久尤物| 亚洲色中文字幕在线播放|