본문 바로가기
IT/안드로이드

(Android) RecycleView에 Item 추가 하기(5/5)

by 불멸남생 2023. 3. 3.

1. 개요

    RecycleView에 아이템을 추가하고,  최근 추가한 아이템으로 스크롤되게 만들어 보겠습니다.

 

2. 작업 순서

    2.1. RecycleView와 하단에 버튼 붙이기.

    2.2. 추가할 아이템 데이터 구조 만들기. 

    2.3. 추가할 아이템  UI 만들기. 

    2.4. RecycleView에 아이템을 추가하는 Adapter 만들기.

    2.5. 추가한 Item으로 이동하기. 여기부터 작업 시작합니다. 

 

3. 작업시작

    3.1. "2.5"를 진행하도록 하겠습니다.

             입력을 하다보면 최근 입력이 보이지 않는 현상이 발생합니다. 그래서 입력할 때 하단으로 스크롤되는 함수를 추가했습니다.

    private void scrollToPosition(int position) {
        if (recyclerView != null) {
            LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
            if (layoutManager != null) {
                layoutManager.scrollToPositionWithOffset(position, 0);
            }
        }
    }

        이제부터 버튼을 클릭하면 최종으로 입력한 아이템이 표시됩니다.

 

4. 소스

// MainActivity.java
package com.example.recycleview;

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

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button btnadd;
    Integer number = 1;
    RecyclerView recyclerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.RCView);
        LinearLayoutManager layoutManager
                 = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);
        RVAdapter rvadpter = new RVAdapter();

        btnadd = findViewById(R.id.btnadd);
        btnadd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rvadpter.addItem(new RSVItem("대한민국"+ number,"울등도","독도"));
                recyclerView.setAdapter(rvadpter);
                scrollToPosition(rvadpter.items.size()-1);
                number++;
            }
        });
    }
    private void scrollToPosition(int position) {
        if (recyclerView != null) {
            LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
            if (layoutManager != null) {
                layoutManager.scrollToPositionWithOffset(position, 0);
            }
        }
    }
}

RecycleView에 Item 추가 하기 끝.

 

반응형