Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีการใช้รายการไม่รู้จบกับ RecyclerView ใน Android?


ตัวอย่างนี้สาธิตวิธีใช้งานรายการไม่รู้จบด้วย RecyclerView ใน Android

ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่

เพิ่มการพึ่งพาต่อไปนี้ใน build gradle (แอปโมดูล) -

การใช้งาน 'com.android.support:cardview-v7:28.0.0'implementation 'com.android.support:recyclerview-v7:28.0.0'

ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml

 

ขั้นตอนที่ 3 − เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java

<ก่อนหน้า>นำเข้า androidx.annotation.NonNull;นำเข้า androidx.appcompat.app.AppCompatActivity;นำเข้า androidx.recyclerview.widget.LinearLayoutManager;นำเข้า androidx.recyclerview.widget.RecyclerView;นำเข้า android.os.Bundle;นำเข้า android.os.Handler;import java.util.ArrayList; MainActivity คลาสสาธารณะขยาย AppCompatActivity { RecyclerView recyclerView; RecyclerViewAdapter รีไซเคิล ViewAdapter; ArrayListrowsArrayList =new ArrayList<>(); isLoading บูลีน =เท็จ; @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); recyclerView =findViewById (R.id.recyclerView); เติมข้อมูล (); initAdapter(); initScrollListener(); } โมฆะส่วนตัว populateData() { สำหรับ (int i =0; i <10; i++) { rowsArrayList.add("Number" + i); } } โมฆะส่วนตัว initAdapter () { recyclerViewAdapter =RecyclerViewAdapter ใหม่ (rowsArrayList); recyclerView.setLayoutManager (ใหม่ LinearLayoutManager (getApplicationContext ())); recyclerView.setAdapter (recyclerViewAdapter); } โมฆะส่วนตัว initScrollListener () { recyclerView.addOnScrollListener (ใหม่ RecyclerView.OnScrollListener () { @Override โมฆะสาธารณะ onScrollStateChanged (@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged (recyclerView @ newScroll สาธารณะเป็นโมฆะ) } NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled (recyclerView, dx, dy); LinearLayoutManager linearLayoutManager =(LinearLayoutManager) recyclerView.getLayoutManager (); if (!isLoading) { if (linear!Fin&LayoutManagerPolymLayoutManager(); () ==rowsArrayList.size() - 1) { //bottom of list! loadMore(); isLoading =true; } } } }); } โมฆะส่วนตัว loadMore () { rowsArrayList.add (null); recyclerViewAdapter.notifyItemInserted(rowsArrayList.size() - 1); ตัวจัดการตัวจัดการ =ตัวจัดการใหม่ (); handler.postDelayed (รันใหม่ได้ () { @Override public void run () { rowsArrayList.remove (rowsArrayList.size () - 1); int scrollPosition =rowsArrayList.size (); recyclerViewAdapter.notifyItemRemoved (scrollPosition); int currentSize =scrollPosition; int nextLimit =currentSize + 10; while (currentSize - 1

ขั้นตอนที่ 4 − สร้าง Java Class ใหม่ (RecyclerViewAdapter.java) และเพิ่มรหัสต่อไปนี้ -

แพ็คเกจ app.com.sample;นำเข้า android.view.LayoutInflater;นำเข้า android.view.View;นำเข้า android.view.ViewGroup;นำเข้า android.widget.ProgressBar;นำเข้า android.widget.TextView;นำเข้า java.util รายการนำเข้า androidx.annotation.NonNull นำเข้า androidx.recyclerview.widget.RecyclerView คลาสสาธารณะ RecyclerViewAdapter extendsRecyclerView.Adapter  { int สุดท้ายส่วนตัว VIEW_TYPE_ITEM =0; รายการส่วนตัว mItemList; RecyclerViewAdapter (รายการ  itemList) { mItemList =itemList; } @NonNull @Override สาธารณะ RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType ==VIEW_TYPE_ITEM) { ดูมุมมอง =LayoutInflater.from (parent.getContext ()).inflate (R.layout.item_row, ผู้ปกครองเท็จ); ส่งคืน ItemViewHolder ใหม่ (ดู); } อื่น { มุมมองมุมมอง =LayoutInflater.from (parent.getContext ()).inflate (R.layout.item_loading, parent, false); ส่งคืน LoadingViewHolder ใหม่ (ดู); } } @แทนที่โมฆะสาธารณะ onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder ตำแหน่ง int) { if (ตัวอย่าง viewHolder ของ ItemViewHolder) { populateItemRows ((ItemViewHolder) viewHolder ตำแหน่ง); } else if (ตัวอย่าง viewHolder ของ LoadingViewHolder) { showLoadingView ((LoadingViewHolder) viewHolder ตำแหน่ง); } } @Override int สาธารณะ getItemCount () { return mItemList ==null ? 0 :mItemList.size(); } @Override สาธารณะ int getItemViewType (ตำแหน่ง int) { int VIEW_TYPE_LOADING =1; ส่งคืน mItemList.get(ตำแหน่ง) ==null ? VIEW_TYPE_LOADING :VIEW_TYPE_ITEM; } ItemViewHolder คลาสส่วนตัวขยาย RecyclerView.ViewHolder { TextView tvItem; ItemViewHolder (@NonNull ดู itemView) { super (itemView); tvItem =itemView.findViewById (R.id.textViewItem); } } คลาสส่วนตัว LoadingViewHolder ขยาย RecyclerView.ViewHolder { ProgressBar ProgressBar; LoadingViewHolder (@NonNull ดู itemView) { super (itemView); ProgressBar =itemView.findViewById (R.id.progressBar); } } โมฆะส่วนตัว showLoadingView (LoadingViewHolder viewHolder ตำแหน่ง int) { } โมฆะส่วนตัว populateItemRows (ItemViewHolder viewHolder ตำแหน่ง int) { รายการสตริง =mItemList.get (ตำแหน่ง); viewHolder.tvItem.setText(รายการ); }}

ขั้นตอนที่ 5 − สร้างไฟล์ทรัพยากร Layout ใหม่ (item_row.xml) และเพิ่มรหัสต่อไปนี้ -

 

ขั้นตอนที่ 6 − สร้างไฟล์ทรัพยากร Layout ใหม่ (item_loading.xml) และเพิ่มรหัสต่อไปนี้ -

 

ขั้นตอนที่ 7 − เพิ่มรหัสต่อไปนี้ใน androidManifest.xml

     <หมวดหมู่ android:name=" android.intent.category.LAUNCHER" />   

มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก แล้วตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ -

วิธีการใช้รายการไม่รู้จบกับ RecyclerView ใน Android?