日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓进阶系列-05列表控件(RecyclerView)的使用

發布時間:2024/4/11 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓进阶系列-05列表控件(RecyclerView)的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RecyclerView的使用

  • 前言
    • 在之前的博客中我介紹了ListView如何使用,當然那部分博客由于沒有考慮基礎的問題,寫的跨度太大,后面我會全部重構的。
    • ListView是一個滑動列表控件,隨著手指的滑動,讓屏幕外的內容到達屏幕內,屏幕內的內容移除屏幕區域,一度被認為這是最常用也最難用的控件。(焦點、高度等問題層出不窮)但是,ListView有幾個致命的弊端,尤其的就是運行效率了,可能小項目還看不出來,但是填充數據大的時候,ListView的劣勢就體現出來了。
    • 當然,在之前,我們選擇兩種主要手段提高效率。(即使用convertView代替getView(),建立內部類ViewHolder緩存控件示例,避免重復控件綁定)
  • 背景
    • 為了方便用戶的使用,拜托ListView的限制(只能縱向延伸),官方新增了控件RecyclerView,它被放在support庫中,所以使用需要添加依賴如下.
      • implementation 'com.android.support:recyclerview-v7:27.1.1'
    • 相比于ListView它優化了效率,且支持橫向滾動和瀑布流布局。還有很多優點可以查看官方文檔。
  • 使用
    • 布局中加入:編輯默認生成的activity_main.xml如下,添加控件如下
      • <android.support.v7.widget.RecyclerView
      • android:id="@+id/recycler_view"
      • android:layout_width="match_parent"
      • android:layout_height="match_parent">
      • </android.support.v7.widget.RecyclerView>
    • 創建適配器:創建java文件MyRecycleViewAdapter.java
      • package com.zc.testforrecyclerview;import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast;import java.util.List;public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {private List<String> mData;static class ViewHolder extends RecyclerView.ViewHolder{View myView;TextView content;public ViewHolder(View view){super(view);myView = view;content = view.findViewById(R.id.content);}}public MyRecyclerViewAdapter(List<String> Data){mData = Data;}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.content, null, false);final ViewHolder holder = new ViewHolder(view);holder.myView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {int position = holder.getAdapterPosition();String str = mData.get(position);Toast.makeText(view.getContext(), "你點擊了第"+Integer.toString(position)+"項", Toast.LENGTH_LONG).show();}});return holder;}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {String name = mData.get(position);holder.content.setText(name);}@Overridepublic int getItemCount() {return mData.size();} }

        ?

    • 注冊點擊事件
      • 很遺憾,RecyclerView沒有提供類似ListView那樣的setOnItemClickListener的方法,當然這不是沒寫,而是ListView注冊事件不是很人性化,它注冊的是子項事件但是當我想要點擊子項中的某個控件就有很多焦點問題,處理比較麻煩,RecyclerView沒有這個問題,他的點擊事件寫在適配器中。
      • 見上面代碼。
    • 運行結果
  • 補充說明
    • 參考書《第一行代碼》
    • 具體項目完整代碼見我的GitHub,上層目錄也有Kotlin代碼。

總結

以上是生活随笔為你收集整理的安卓进阶系列-05列表控件(RecyclerView)的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。