프로그래밍/Android Studio

RecyclerView 연습용

나도 오늘부터 개발자?! 2022. 2. 18. 09:43

 

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //객체화
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.lab3_recycler);

        // 어뎁터에 들어갈 데이터를 넘겨주기 위해 가상의 데이터를 생성하는 것
        List<String> list = new ArrayList<>(); // dummy 데이터를 입력 할 변수 생성
        for (int i = 0; i < 30; i++) { // dummy(가상) 데이터를 만들어줌 혹은 데이터 묶음 (RecyclerView에 들어갈 데이터)
            list.add("NoNO" + i);
        }

        //recyclerview 세팅 및 사용한다고 이야기 해주는 곳
        recyclerView.setAdapter(new MyAdapter(list)); // adapter를 세팅 해주는 곳
        recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 이외에도 다양한 recyclerView가 많다
    }

    // 선택한 뷰 홀더의 틀을 생성하는 곳 (뷰 홀더)
    private class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView title;

        public MyViewHolder(View itemView) {
            super(itemView);
            title = (TextView) itemView.findViewById(android.R.id.text1);
        }
    }

    // 어뎁터 생성
    private class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
        private List<String> list;

        public MyAdapter(List<String> list) {
            this.list = list;
        }

        // 어떤 어뎁터의 틀을 사용할지 선택하는 곳 그리고 선택 한 어뎁터의 틀은 뷰 홀더가 생성해 준다.
        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
            return new MyViewHolder(view);
        }

        // 생성한 틀에 실제 내용을 넣어주는 곳
        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            String text = list.get(position);
            holder.title.setText(text);
        }

        // 크기를 돌려주기 위해 만듬
        @Override
        public int getItemCount() {
            return list.size();
        }
    }
}