상세 컨텐츠

본문 제목

[안드로이드] RecycelrView 안에(중첩) RecycelrView 만드는 방법 part2

안드로이드

by aries574 2022. 4. 28. 12:27

본문


이번에는 저번 포스팅에 이어서 하겠습니다. 

메인에 만든 RecyclerView안에 RecyclerView를 보여주겠습니다.


목차

1. 실행 화면

2. 자식 아이템 화면 child_row_layout

3. 자식 어뎁터 코드 ChildAdapter.java

4. 부모 어뎁터 코드 수정 ParentAdapter.java


1. 실행 화면

 

2. 자식 아이템 화면 child_row_layout

 - 설명 -

메인에 보여지는 RecyclerView안에 보일 화면입니다.

 child_row_layout.xml

<?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="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:orientation="vertical">

    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardCornerRadius="15dp"
        app:cardElevation="15dp">

        <LinearLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@android:color/holo_orange_light"
            android:orientation="vertical">

            <TextView
                android:id="@+id/dayText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="Day"
                android:textColor="@android:color/white"
                android:textSize="20sp"
                android:textStyle="bold" />
        </LinearLayout>

    </androidx.cardview.widget.CardView>
</LinearLayout>

2022.01.01 - [안드로이드] - [안드로이드 스튜디오] 레이아웃 추가하는 방법

 

[안드로이드 스튜디오] 레이아웃 추가하는 방법

이번 시간에는 안드로이드 스튜디오에서 레이아웃 추가하는 방법을 알아보겠습니다. 안드로이드 프로젝트를 만들면 java폴더에는 MainActivity 파일이 있고, res -> layout 폴더에는 activity_main.xml 파일

aries574.tistory.com

 

 

3. 자식 어뎁터 코드 ChildAdapter.java

 - 설명 -

 부모 어뎁터에서 넘긴 데이터와 자식 아이템 화면을 이어주는 클래스입니다.

ChildAdapter.java

public class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.MyViewHolder> {

    ArrayList<String> childArrayList;

    public ChildAdapter(ArrayList<String> childArrayList) {
        this.childArrayList = childArrayList;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());

        View view = inflater.inflate(R.layout.child_row_layout, parent, false);

        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        holder.dayText.setText(childArrayList.get(position));
    }

    @Override
    public int getItemCount() {
        return childArrayList.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

        TextView dayText;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            dayText = itemView.findViewById(R.id.dayText);
        }
    }
}

 

4. 부모 어뎁터 코드 수정 ParentAdapter.java

 - 설명 - 

 onBindViewHolder 메서드에 RecyclerView 설정을 추가합니다.

public class ParentAdapter extends RecyclerView.Adapter<ParentAdapter.MyViewHolder> {

    ArrayList<String> parentArrayList;
    Context context;

    ArrayList<String> dayList;

    public ParentAdapter(ArrayList<String> parentArrayList, Context context) {
        this.parentArrayList = parentArrayList;
        this.context = context;
    }

    //화면 생성
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());

        View view = inflater.inflate(R.layout.parent_row_layout, parent, false);

        return new MyViewHolder(view);

    }

    //데이터 셋팅
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        holder.itemName.setText(parentArrayList.get(position));

        //자식 RecyclerView 생성
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context,
                LinearLayoutManager.HORIZONTAL, false);

        holder.childRV.setLayoutManager(layoutManager);
        holder.childRV.setHasFixedSize(true);

        //초기화
        dayList = new ArrayList<String>();

        //데이터 생성
        dayList.add("Sun");
        dayList.add("Mon");
        dayList.add("Tue");
        dayList.add("Wed");
        dayList.add("Thu");
        dayList.add("Fri");
        dayList.add("Sat");

        ChildAdapter adapter = new ChildAdapter(dayList);
        holder.childRV.setAdapter(adapter);
    }

    @Override
    public int getItemCount() {
        return parentArrayList.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

        TextView itemName;
        RecyclerView childRV;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            itemName = itemView.findViewById(R.id.itemName);
            childRV = itemView.findViewById(R.id.childRV);
        }
    }
}

2022.04.02 - [안드로이드] - [안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면 구성

 

[안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면구성

앞으로 같은 그림 찾기 게임을 만들어 보겠습니다. 이번 시간에는 화면 구성을 해보겠습니다. 이 게임은 8장의 카드가 있고, 2장의 카드를 뒤집어서 같은 그림이면 성공, 틀리면 맞을 때까지 하

aries574.tistory.com

2022.03.09 - [안드로이드] - [안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part1

 

[안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part

이번 시간에는 Firebase를 통해 데이터베이스에 간단한 데이터를 쓰고 읽는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 프로젝트 만들기 3. 앱 만들기 4. 데이터 베이스 만들기 5. 라이브러

aries574.tistory.com

2022.02.23 - [안드로이드] - [안드로이드] 원형 메뉴(CircleMenu) 쉽게 만드는 방법

 

[안드로이드] 원형메뉴(CircleMenu) 쉽게 만드는 방법

이번 시간에는 원형버튼을 클릭하면 퍼지면서 원형메뉴를 보여주는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity

aries574.tistory.com

반응형

관련글 더보기

댓글 영역