본문 바로가기
Android Studio

[Android Studio] Adapter.java 사용하기

by 처카푸 2024. 6. 10.

Adapter 사용하기

 

Adapter 패키지 만들고,

안에 Adapter.java 파일을 만들기

 

1. 뷰 홀더 클래스를 만든다.

- row.xml 파일과 이어주고, 변수 이름 저장하는 곳

// 1. 뷰 홀더 클래스 만든다
    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView txtName;
        TextView txtAge;
        TextView txtSalary;
        ImageView imgDelete;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            txtName = itemView.findViewById(R.id.txtName);
            txtAge = itemView.findViewById(R.id.txtAge);
            txtSalary = itemView.findViewById(R.id.txtSalary);
            imgDelete = itemView.findViewById(R.id.imgDelete);
        }
    }

 

2. RecyclerView.Adapter 상속받고, ViewHolder를 세팅한다.

extends RecyclerView.Adapter<EmployerAdapter.ViewHolder>

 

3. 빨간 줄 생기면, 구현할 메서드를 오버라이딩 해준다.

 

4. 어뎁터 클래스의 멤버 변수 만든다.

- 액티비티에서 데이터를 받을 context 변수 만들기

- 데이터를 받아서 저장할 어레이리스트 변수 만들기

    // 4. 멤버변수 만든다.
    Context context;
    ArrayList<Employer> employerArrayList;

 

5. 생성자 만들기. (디폴트 생성자는 해도 되고, 안 해도 된다.)

 

6. 아래 3개의 함수를 구현한다.

    // 6. 아래 3개 메소드를 모두 구현한다.
    @NonNull
    @Override
    // 어뎁터 클래스와 XML파일 연결
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.employer_row, parent, false);
        return new EmployerAdapter.ViewHolder(view);
    }

    @Override
    // XML 파일에서 데이터 보여주는 부분 설정
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        Employer employer = employerArrayList.get(position);
        
        // 금액 데이터 콤마 넣어주기
        DecimalFormat df = new DecimalFormat("###,###");
        String strSalary = df.format(employer.salary);

        holder.txtName.setText(employer.name);
        holder.txtAge.setText("나이 : " + employer.age + " 세");
        holder.txtSalary.setText("연봉 : $" + strSalary);
    }

    @Override
    // 데이터 개수만큼
    public int getItemCount() {
        return employerArrayList.size();
    }