- Adapter 패턴 사용
1. RecyclerView 태그 추가
- 원하는 화면 xml 파일에 다음과 같이 추가
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
2. 데이터.java 생성
- model 폴더
- 변수, 생성자, Get/Set 함수 만들기 (우클릭 → Generate)
3. 데이터_item.xml 생성
- 각 데이터별 카드 디자인
- CardView를 활용함
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="#FFFFFF"
app:cardCornerRadius="10dp"
app:cardElevation="5dp"
app:cardUseCompatPadding="true">
</androidx.cardview.widget.CardView>
</LinearLayout>
4. 데이터Adapter.java 생성
- extends RecyclerView.Adapter<데이터Adapter.ViewHolder>
- public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType){}
- public void onBindViewHolder(ViewHolder viewHolder, int position){}
- public int getItemCount(){}
- static class ViewHolder extends RecyclerView.ViewHolder{} 등등 추가
package org.techtown.recyclerview;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class 데이터Adapter extends RecyclerView.Adapter<데이터Adapter.ViewHolder> {
ArrayList<데이터> items = new ArrayList<데이터>();
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
View itemView = inflater.inflate(R.layout.person_item, viewGroup, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
데이터 item = items.get(position);
viewHolder.setItem(item);
}
@Override
public int getItemCount() {
return items.size();
}
static class ViewHolder extends RecyclerView.ViewHolder{
TextView textView; //데이터_item.xml 내부의 요소
public ViewHolder(View itemView){
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
public void setItem(데이터 item){
textView.setText(item.getName());
}
}
public void addItem(데이터 item){
items.add(item);
}
public void setItems(ArrayList<데이터> items){
this.items = items;
}
public 데이터 getItem(int position){
return items.get(position);
}
public void setItem(int position, 데이터 item){
items.set(position, item);
}
}
5. 원하는 화면(RecyclerView를 포함한 화면)과 관련된.java에 코드 추가
- LayoutManager 이용해서 recyclerView 레이아웃 설정
- Adapter 생성 후 addItem
- RecyclerView에 Adapter을 이용해서 데이터 넘기기
RecyclerView recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
PersonAdapter adapter = new PersonAdapter();
adapter.addItem(new 데이터("데이터1","데이터1속성"));
adapter.addItem(new 데이터("데이터2","데이터2속성"));
adapter.addItem(new 데이터("데이터3","데이터3속성"));
recyclerView.setAdapter(adapter);
'App > Android Studio' 카테고리의 다른 글
안드로이드 스튜디오 TextView 줄간격 설정하기 (lineSpacingExtra) (0) | 2021.09.19 |
---|---|
안드로이드 스튜디오 다크모드 지원 비활성화 하기 (0) | 2021.07.19 |
안드로이드 스튜디오에 Google Dialogflow 연결하기 (0) | 2021.07.14 |
Uploaded by Notion2Tistory v1.1.0