일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 인증문제해결
- git인증
- react
- 뒤로가기 안됨
- Kotlin
- gradle
- not working
- VisualStudio
- aPK
- Android
- 안드로이드 스튜디오
- 빌드 오류
- 개발환경설정
- 안드로이드
- bitbucket
- 안됨
- AWS
- Git
- WPF
- 디버깅
- EC2
- 데이터바인딩
- flutter
- react-native
- 리액트
- 설정
- 리액트 네이티브
- 예제
- Invalid credentials
- sourcetree
- Today
- Total
물에 살고싶은 개발자
나를 위한 RecyclerView 사용법 (혹은 초기 세팅법) 본문
RecyclerView(리싸이클러뷰, 이하 RV) 사용법을 나를 위해 메모하는 감각으로 써두려고 한다.
이 글에는 RV의 원리라던가 그런 학술적(?!)이고 기술적인 내용은 전혀 없음을 미리 밝힌다.
이 글에도 뭔가 설명이 부족하다 느낀다면 내가 이 글을 작성하면서 참고한 이 블로그의 포스트를 보는걸 추천한다.
그리고 아래에 나올 샘플코드들은 RV만 있는 테스트 프로젝트임을 참고할것.
그럼 바로 시작 !
build.gradle(app)에 아래 내용을 추가
build.gradle
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//RecyclerView 사용을 위한 dependencies 추가
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
}
그리고 Sync Now 를 클릭해주면 안드로이드 스튜디오가 알아서 세팅해줄것이다.
이제 사용하고싶은곳에 사용하면 된다.
순서는 만드는사람 마음이지만 내가 쓰기위한 글이므로 내 방식대로 쓰겠다.
일단 RV를 띄울 액티비티나 프래그먼트의 xml 파일에 해당내용을 추가
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
xml에서 뷰를 만들었으면 사용할 java파일로 가자(액티비티나 프래그먼트 클래스 파일 또는 담당 class)
MainActivity.java
List<String> data = new ArrayList<>(); //테스트용이므로 심플하게 String
addList(data); //RecyclerView에 출력할 데이터를 리스트에 추가
RecyclerView recyclerView = findViewById(R.id.rcv);
TestAdapter adapter = new TestAdapter(this, data);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this); //레이아웃 매니저 설정
recyclerView.setHasFixedSize(true); //RecyclerView 사이즈가 고정이라면 이 설정을 해서 퍼포먼스 상승
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setAdapter(adapter);
이렇게 RV 세팅코드를 추가해주자
그럼 이제 만들지 않았던 어댑터가 빨간줄로 뜨면서 거슬리게 할것이다.
커서를 어댑터에 대고 알트엔터를 통해 클래스를 생성해주자. 그럼 자동으로 필요한 상속까지 받아준다.
그럼 이제 어댑터 코드를 작성해주자
TestAdapter.java
public class TestAdapter extends RecyclerView.Adapter<TestAdapter.ViewHolder> {
Context context;
List<String> data;
LayoutInflater inflater;
private ViewHolder item;
public TestAdapter(Context context, List<String> data) {
this.context = context;
this.data = data;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@NonNull
@Override
public TestAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull TestAdapter.ViewHolder viewHolder, int i) {
item = viewHolder;
String name = data.get(i);
item.tag.setText(name);
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView tag;
ViewHolder(View itemView) {
super(itemView);
tag = itemView.findViewById(R.id.tv);
}
}
@Override
public int getItemCount() {
return data.size();
}
}
아주 다~~~안순하게 텍스트뷰에 문자열을 세팅해주는 어댑터다.
나같은경우는 VO(Value Object) 만드는게 귀찮아서 이런식으로 연결해두고 액티비티에서 직접 추가한다.
자 그럼 이제 다된거같은데 빨간글씨가 또 괴롭힐것이다
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false); <-바로 이부분
저기에 item이 빨간색으로 뜰것이다. 어댑터를 만들때처럼 알트+엔터를 활용해 아이템으로 쓸 xml 파일을 작성해주면 끝이다.
이렇게 하면 RV의 세팅이 끝난다.
보너스로 RV 응용하는 키워드
RV의 형태
추가적으로 RV의 형태는 다양하게 만들 수 있어서 가로,세로,그리드형태,불규칙적인 그리드형태 등등 디테일한 설정이 가능하다.
(물론 당신이 생각하는것만큼 디테일하지 않을 수 있다)
그 부분은 오픈소스 라이브러리를 이용해 커스텀하던지 아니면 안드로이드에서 제공하는 LayoutManager 를 검색해 어떤 형태로 사용이 가능한지 확인하자
RV 아이템간의 설정
ItemDecoration 관련된 클래스들을 검색해보면 RV의 아이템간의 간격이나 아이템을 꾸미는 방법 등등을 알 수 있다.
RV 아이템의 타입이 여러개인 경우
ViewType 이라는 기능이 있다. onCreateViewHoler()에서 ViewType에 나눠서 여러개의 xml파일을 인플레이팅하고
onBindViewHolder()에서 해당 ViewType에 따라 알맞게 세팅해주면 된다.
지금 생각나는게 요정도뿐이므로 여기까지 끗 !
Ps.자세한 사항은 따로 검색해보는것을 추천한다. 맨 위에서 말했듯이 나를 위한 메모용도의 포스팅이기때문에...ㅋㅋㅋㅋ