[Android] RecyclerView
2020. 4. 10. 23:58
RecyclerView 사용하기
1. Gradle 추가
2. 위젯 추가
3. item_list.xml파일 생성
4. ListData.java 파일 생성
5. RecyclerAdapter.java파일 생성
6. MainActivity.java파일에 RecyclerView 객체 연결 및 데이터 추가
1.
dependencies 내부에 recylclerview implementation 추가 (에러가 발생하신다면 sdk버전에 맞게 수정해주시면 됩니다.)
implementation 'com.android.support:recyclerview-v7:29.0.0'
2.
xml에 위젯 추가
LinearLayout을 생성
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
</LinearLayout>
3.
item_list.xml 파일 생성
LinearLayout(vertical) - LinearLayout(horizontal) 내부에 원하는 형태의 뷰를 생성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="TITLE"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="content"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
4.
ListData.java 생성해서 데이터값 선언
public class ListData {
private String tv_title;
private String tv_content;
public ListData(String tv_title, String tv_content){
this.tv_title = tv_title;
this.tv_content = tv_content;
}
public String getTv_title() {
return tv_title;
}
public void setTv_title(String tv_title) {
this.tv_title = tv_title;
}
public String getTv_content() {
return tv_content;
}
public void setTv_content(String tv_content) {
this.tv_content = tv_content;
}
}
5.
RecyclerAdapter.java
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv_title, tv_content;
MyViewHolder(View view){
super(view);
tv_title = view.findViewById(R.id.tv_title);
tv_content = view.findViewById(R.id.tv_content);
}
}
private ArrayList<ListData> arrayList;
RecyclerAdapter(ArrayList<ListData> arrayList){
this.arrayList = arrayList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
MyViewHolder myViewHolder = (MyViewHolder) holder;
myViewHolder.tv_title.setText(arrayList.get(position).getTv_title());
myViewHolder.tv_content.setText(arrayList.get(position).getTv_content());
}
@Override
public int getItemCount() {
return arrayList.size();
}
}
6.
MainActivity.java파일에 객체 연결하고 데이터 추가
// RecyclerView 객체 생성 및 연결
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
// ArrayList에 정보 추가
ArrayList<ListData> arrayList = new ArrayList<>();
arrayList.add(new ListData("가", "11111"));
arrayList.add(new ListData("나", "22222"));
arrayList.add(new ListData("다", "33333"));
arrayList.add(new ListData("라", "44444"));
arrayList.add(new ListData("마", "55555"));
arrayList.add(new ListData("바", "66666"));
arrayList.add(new ListData("사", "77777"));
arrayList.add(new ListData("아", "88888"));
arrayList.add(new ListData("자", "99999"));
arrayList.add(new ListData("차", "1010101010"));
RecyclerAdapter rcAdapter = new RecyclerAdapter(arrayList);
recyclerView.setAdapter(rcAdapter);
RecyclerView 실행화면 (※ UI디자인은 따로 수정했습니다.)
'안드로이드 > Android' 카테고리의 다른 글
[Android] 애드몹 광고 (0) | 2020.04.17 |
---|---|
[Android] ScalableLayout (0) | 2020.04.17 |
[Android] 로딩화면 구현 (0) | 2020.04.06 |
[Android]상태바 및 타이틀바 제거 (0) | 2020.02.26 |
[Android] 다음 지도 API (0) | 2020.02.25 |