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

จะไฮไลต์รายการที่เลือกบน Android RecyclerView ได้อย่างไร


ตัวอย่างนี้สาธิตวิธีการไฮไลต์รายการที่เลือกบน Android RecyclerView อย่างถูกต้อง

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

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

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

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

 

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

   

ขั้นตอนที่ 4 − สร้างไฟล์ทรัพยากรที่ถอนได้ดังที่กล่าวไว้ด้านล่างและเพิ่มรหัสที่เกี่ยวข้อง -

back_selector.xml −

 <รายการ android:drawable="@color/colorAccent" android:state_pressed="false" android:state_selected="true" /> 

line_divider.xml −

 <ขนาด android:width="2dp" android:height="2dp" /> 

ขั้นตอนที่ 5 − สร้างไฟล์คลาส java ตามที่ระบุด้านล่างและเพิ่มรหัสที่เกี่ยวข้อง -

วัตถุสิ่งของ

คลาส ItemObject { สตริงส่วนตัว awardTitle; รางวัลสตริงส่วนตัวปี; ผู้เล่นสตริงส่วนตัว; ItemObject (ชื่อรางวัลสตริง, รางวัลสตริงปี, ผู้เล่นสตริง) { this.awardTitle =awardTitle; this.awardYear =รางวัลปี; this.player =ผู้เล่น; } สตริง getAwardTitle () { ส่งคืนชื่อรางวัล; } สตริง getAwardYear () { ผลตอบแทนรางวัลปี; } สตริง getPlayer () { ผู้เล่นกลับ; }}

RecyclerViewAdapter -

นำเข้า android.content.Context;นำเข้า android.view.LayoutInflater;นำเข้า android.view.View;นำเข้า android.view.ViewGroup;นำเข้า java.util.List;นำเข้า androidx.annotation.NonNull;นำเข้า androidx.recyclerview widget.RecyclerView; RecyclerViewAdapter คลาสสาธารณะ extendsRecyclerView.Adapter  { รายการส่วนตัว  itemList; RecyclerViewAdapter (บริบทบริบท รายการ  itemList) { this.itemList =itemList; } @NonNull @Override สาธารณะ RecyclerViewHolders onCreateViewHolder (พาเรนต์ ViewGroup, int viewType) { ดูเลย์เอาต์ =LayoutInflater.from (parent.getContext ()) พอง (R.layout.list_layout, null); ส่งคืน RecyclerViewHolders ใหม่ (layoutView); } @แทนที่โมฆะสาธารณะ onBindViewHolder (ผู้ถือ RecyclerViewHolders ตำแหน่ง int) { holder.awardTitle.setText ("ชื่อรางวัล:" + itemList.get (ตำแหน่ง).getAwardTitle ()); holder.awardYear.setText("ปีรางวัล:" + itemList.get(ตำแหน่ง).getAwardYear()); holder.player.setText("ชื่อผู้เล่น:" + itemList.get(position).getPlayer()); } @Override int สาธารณะ getItemCount() { return this.itemList.size(); }}

RecyclerViewHolders

นำเข้า android.util.SparseBooleanArray;นำเข้า android.view.View;นำเข้า android.widget.TextView;นำเข้า androidx.recyclerview.widget.RecyclerView;คลาส RecyclerViewHolders ขยาย RecyclerView.ViewHolder ใช้View.OnClickListener { TextView awardTitle; รางวัล TextView ปี; เครื่องเล่น TextView; SparseBooleanArray ส่วนตัวที่เลือกไว้ =SparseBooleanArray ใหม่ (); RecyclerViewHolders (ดู itemView) { super (itemView); itemView.setOnClickListener(นี้); AwardTitle =itemView.findViewById(R.id.awardTitle); AwardYear =itemView.findViewById(R.id.awardYear); ผู้เล่น =itemView.findViewById(R.id.playerName); } @แทนที่โมฆะสาธารณะ onClick (ดูมุมมอง) { ถ้า (selectedItems.get (getAdapterPosition () เท็จ)) { selectedItems.delete (getAdapterPosition ()); view.setSelected(เท็จ); } อื่น ๆ { selectedItems.put(getAdapterPosition(), true); view.setSelected(จริง); } }}

การตกแต่งไอเท็มอย่างง่าย

<ก่อนหน้า>นำเข้า android.content.Context;นำเข้า android.graphics.Canvas;นำเข้า android.graphics.drawable.Drawable;นำเข้า android.view.View;นำเข้า androidx.annotation.NonNull;นำเข้า androidx.core.content.ContextCompat;นำเข้า androidx.recyclerview.widget.RecyclerView; class SimpleItemDecoration ขยาย RecyclerView.ItemDecoration { Drawable ส่วนตัว drawable; SimpleItemDecoration (บริบทบริบท) { drawable =ContextCompat.getDrawable (บริบท R.drawable.line_divider); } @แทนที่โมฆะสาธารณะ onDrawOver(@NonNull Canvas canvas, RecyclerView parent, @NonNull RecyclerView.State state) { int left =parent.getPaddingLeft(); int ขวา =parent.getWidth() - parent.getPaddingRight(); int childCount =parent.getChildCount (); สำหรับ (int i =0; i

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

นำเข้า androidx.appcompat.app.AppCompatActivity;นำเข้า androidx.recyclerview.widget.LinearLayoutManager;นำเข้า androidx.recyclerview.widget.RecyclerView;นำเข้า android.os.Bundle;นำเข้า java.util.ArrayList;นำเข้า java.util.List;คลาสสาธารณะ MainActivity ขยาย AppCompatActivity { @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recyclerView =findViewById (R.id.recyclerView); recyclerView.addItemDecoration (ใหม่ SimpleItemDecoration (นี้)); LinearLayoutManager layoutManager =ใหม่ LinearLayoutManager (MainActivity.this); recyclerView.setLayoutManager (layoutManager); รายการ  โพสต์ =returnListItems(); อะแดปเตอร์ RecyclerViewAdapter =ใหม่ RecyclerViewAdapter (MainActivity.this โพสต์); recyclerView.setAdapter (อะแดปเตอร์); } รายการส่วนตัว  returnListItems () { รายการ  รายการ =ใหม่ ArrayList<>(); items.add(ใหม่ ItemObject("Ballon'd'or", "2007", "Ricardo KaKa")); items.add(ใหม่ ItemObject("Ballon'd'or", "2008", "Cristiano Ronaldo")); items.add(ใหม่ ItemObject("Ballon'd'or", "2009 - 2012, 2015", "Lionel Messi")); items.add(ใหม่ ItemObject("Ballon'd'or", "2013, 2014, 2016, 2017", "Cristiano Ronaldo")); items.add(ใหม่ ItemObject("Ballon'd'or", "2018", "Luca Modric")); items.add(new ItemObject("Ballon'd'or", "2019", "ยังไม่ได้ตัดสินใจ")); ส่งคืนสินค้า; }}

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

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

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

จะไฮไลต์รายการที่เลือกบน Android RecyclerView ได้อย่างไร