[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

+ Recent posts