상세 컨텐츠

본문 제목

[안드로이드] Database Room 사용법 part3 - 리스트

안드로이드

by aries574 2022. 5. 16. 11:40

본문


 이번 시간에는 등록한 사용자를 리스트로 보여주는 방법에 대하여 알아보겠습니다.

 이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.05.15 - [안드로이드] - [안드로이드] Database Room 사용법 part2 - 데이터 등록

 

[안드로이드] Database Room 사용법 part2 - 데이터 등록

이번 시간에는 Room을 이용해서 DB에 데이터 등록하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.05.14 - [안드로이드] - [안드로이드] Database Room 사용법 part1 - Room

aries574.tistory.com


목차

1. 실행 화면

2. 아이템 화면 만들기

3. 아이템 어댑터 만들기

4. 메인 코드 구현 MainActivity.java


1. 실행 화면

 

2. 아이템 화면 만들기

- 설명 -

 1. 이름과 나이를 텍스트 뷰로 보여줍니다.

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    app:cardCornerRadius="10dp"
    app:cardElevation="20dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/name_text"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/age_text"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:textSize="20sp"
            android:textStyle="bold" />
    </LinearLayout>

</androidx.cardview.widget.CardView>

 

 

3. 아이템 어댑터 만들기

 - 설명 -

 1. 데이터와 아이템 화면을 연결해주는 클래스

 UserAdapter.java

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

    List<User> userList;

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

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

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

        return new MyViewHolder(view);
    }

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

        holder.nameText.setText(userList.get(position).userName);
        holder.ageText.setText(userList.get(position).userAge);
    }

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

    //리스트 저장
    public void setUserList(List<User> userList){

        this.userList = userList;
    }

    class MyViewHolder extends RecyclerView.ViewHolder{

        TextView nameText, ageText;

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

            nameText = itemView.findViewById(R.id.name_text);
            ageText = itemView.findViewById(R.id.age_text);
        }
    }
}

 

4. 메인 코드 구현 MainActivity.java

 - 설명 - 

 1. 가져온 사용자 정보 Adapter로 넘겨준다. 

 2. 넘겨받은 데이터를 Adapter를 통해 화면에 보여준다.

public class MainActivity extends AppCompatActivity {

    UserAdapter adapter;

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

        FloatingActionButton fab = findViewById(R.id.insertBtn);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(MainActivity.this, InsertUserActivity.class);
                activityResult.launch(intent);
            }
        });

        //RecyclerView 초기화 및 설정
        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        //UserAdapter 초기화
        adapter = new UserAdapter();

        //RecyclerView Adapter 설정
        recyclerView.setAdapter(adapter);

        //사용자 조회
        loadUserList();
    }

    ActivityResultLauncher<Intent> activityResult = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {

                    if(result.getResultCode() == RESULT_OK){

                        //사용자 조회
                        loadUserList();
                    }
                }
            }
    );

    //사용자 조회
    private void loadUserList() {

        AppDatabase db = AppDatabase.getDBInstance(this.getApplicationContext());

        List<User> userList = db.userDao().getAllUser();

        //리스트 저장
       adapter.setUserList(userList);
    }
}

2022.05.07 - [안드로이드] - [안드로이드] HTTP 통신 Volley 사용법 part1 - 간단한 요청 및 응답

 

[안드로이드] HTTP 통신 Volley 사용법 part1 - 간단한 요청 및 응답

이번 시간에는 HTTP통신을 쉽게 도와주는 Volley 라이브러리를 이용해서 API 호출,  데이터를 가져오는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 권한 등록 3. 라이브러리 등록 4. 메인

aries574.tistory.com

2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

 

[안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

이번 시간부터 커스텀 달력을 만들어 보겠습니다. 이번에는 메인화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 1. 실행 화면 2. 메인 화면 구성 activity_main.xml  -.

aries574.tistory.com

2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성

 

[안드로이드] Tab Custom Animation part1 - 화면 구성

이번 시간부터 TabLayout을 직접 만들어 애니메이션까지 넣어보는 방법을 알아보겠습니다. 이번 포스팅은 화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 테마 변경 3. 배경 색상 파일 만들기(drawab

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역