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단계 − 아래와 같이 드로어블 리소스 파일을 생성하고 해당 코드를 추가합니다. −

background_selector.xml -

   

line_divider.xml -

 <크기 android:width="2dp" android:height="2dp" /> 

5단계 − 아래와 같이 Java 클래스 파일을 생성하고 해당 코드를 추가합니다. −

항목 개체 -

class ItemObject { 개인 문자열 AwardTitle; 개인 문자열 AwardYear; 개인 스트링 플레이어; ItemObject(문자열 AwardTitle, 문자열 AwardYear, 문자열 플레이어) { this.awardTitle =AwardTitle; this.awardYear =수상 연도; this.player =플레이어; } 문자열 getAwardTitle() { return AwardTitle; } 문자열 getAwardYear() { return AwardYear; } String getPlayer() { 플레이어를 반환합니다. }}

RecyclerViewAdapter -

import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import java.util.List;import androidx.annotation.NonNull;import androidx.recyclerview. 위젯.RecyclerView;공개 클래스 RecyclerViewAdapter extendsRecyclerView.Adapter { private List itemList; RecyclerViewAdapter(컨텍스트 컨텍스트, List itemList) { this.itemList =itemList; } @NonNull @Override public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { 보기 layoutView =LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, null); 새로운 RecyclerViewHolders(layoutView)를 반환합니다. } @Override public void onBindViewHolder(RecyclerViewHolders holder, int position) { holder.awardTitle.setText("상 제목:" + itemList.get(position).getAwardTitle()); holder.awardYear.setText("수상 연도:" + itemList.get(position).getAwardYear()); holder.player.setText("플레이어 이름:" + itemList.get(position).getPlayer()); } @Override public int getItemCount() { return this.itemList.size(); }}

RecyclerViewHolders -

 import android.util.SparseBooleanArray;import android.view.View;import android.widget.TextView;import androidx.recyclerview.widget.RecyclerView;class RecyclerViewHolders extends RecyclerView.ViewHolder implementsView.OnClickListener { TextView AwardTitle; TextView 수상연도; 텍스트뷰 플레이어; 개인 SparseBooleanArray selectedItems =new SparseBooleanArray(); RecyclerViewHolders(보기 itemView) { super(itemView); itemView.setOnClickListener(이); AwardTitle =itemView.findViewById(R.id.awardTitle); AwardYear =itemView.findViewById(R.id.awardYear); 플레이어 =itemView.findViewById(R.id.playerName); } @Override public void onClick(보기 보기) { if (selectedItems.get(getAdapterPosition(), false)) { selectedItems.delete(getAdapterPosition()); view.setSelected(거짓); } else { 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, 클래스 SimpleItemDecoration extends RecyclerView.ItemDecoration { 개인 드로어블 드로어블; SimpleItemDecoration(컨텍스트 컨텍스트) { drawable =ContextCompat.getDrawable(컨텍스트, R.drawable.line_divider); } @Override public void onDrawOver(@NonNull 캔버스 캔버스, RecyclerView 부모, @NonNull RecyclerView.State 상태) { int left =parent.getPaddingLeft(); int right =parent.getWidth() - parent.getPaddingRight(); int childCount =parent.getChildCount(); for (int i =0; i  

6단계 − src/MainActivity.java

에 다음 코드 추가
androidx.appcompat.app.AppCompatActivity 가져오기; androidx.recyclerview.widget.LinearLayoutManager 가져오기; androidx.recyclerview.widget.RecyclerView 가져오기; android.os.Bundle 가져오기;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle storedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView 재활용 보기 =findViewById(R.id.recyclerView); 재활용 보기.addItemDecoration(새로운 SimpleItemDecoration(이)); LinearLayoutManager layoutManager =new LinearLayoutManager(MainActivity.this); 재활용 보기.setLayoutManager(레이아웃 관리자); List 게시물 =returnListItems(); RecyclerViewAdapter 어댑터 =new RecyclerViewAdapter(MainActivity.this, posts); 재활용 보기.setAdapter(어댑터); } 개인 List returnListItems() { List 항목 =새 ArrayList<>(); items.add(new ItemObject("Ballon'd'or", "2007", "Ricardo KaKa")); items.add(new ItemObject("발롱도르", "2008년", "크리스티아누 호날두")); items.add(new ItemObject("발롱도르", "2009 - 2012, 2015", "리오넬 메시")); items.add(new ItemObject("발롱도르", "2013, 2014, 2016, 2017", "크리스티아누 호날두")); items.add(new ItemObject("발롱도르", "2018", "루카 모드리치")); items.add(new ItemObject("Ballon'd'or", "2019", "아직 결정하지 않았습니다")); 반품 품목; }}

7단계 − androidManifest.xml에 다음 코드 추가

     <카테고리 android:name=" android.intent.category.LAUNCHER" />   

응용 프로그램을 실행해 보겠습니다. 실제 Android 모바일 장치를 컴퓨터에 연결했다고 가정합니다. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고 도구 모음에서 실행 아이콘을 클릭합니다. 모바일 장치를 옵션으로 선택한 다음 기본 화면을 표시할 모바일 장치를 확인하십시오 -

Android RecyclerView에서 선택한 항목을 올바르게 강조 표시하는 방법은 무엇입니까?