상세 컨텐츠

본문 제목

[안드로이드] Firebase Realtime Database RecyclerView 사용자 리스트 보는 방법

안드로이드

by aries574 2022. 3. 13. 14:42

본문


이번 시간에는 Firebase Realtime Database에

등록된 사용자 정보를 가져와서 리스트로 보여

주는 방법에 대하여 알아보겠습니다.

이전 포스팅에 이어서 하기 때문에 먼저 보시고

오시면 됩니다. 

2022.03.12 - [안드로이드] - [안드로이드] Firebase Realtime Database RecyclerView 사용자 등록하는 방법

 

[안드로이드] Firebase Realtime Database RecyclerView 사용자 등록하는 방법

이번 시간에는 Firebase Realtime Database에 사용자 정보를 등록하는 방법을 알아보겠습니다. Firebase Realtime Database 설정부분은 아래 링크를 따라하시면 됩니다. 2022.03.09 - [안드로이드] - [안드로이드..

aries574.tistory.com

Firebase Realtime Database 설정 부분은 아래 링크를

따라 하시면 됩니다.

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

 

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

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

aries574.tistory.com


목차

1. 실행화면

2. 데이터베이스 기능 추가(조회)

3. 리스트 화면 만들기

4. 어뎁터 클래스 만들기

4. 리스트 액티비티 만들기

5. 메인 화면 구성 activity_main.xml

6. 메인 코드 구현 MainActivity.java


1. 실행화면

 

 

2. 데이터베이스 기능 추가(조회)

 - 설명 - 

데이터베이스에서 사용자 정보를 가져옵니다.

DAOUser.java

    //조회
    public Query get(){

        return  databaseReference;
    }

 - 전체 코드 -

public class DAOUser {

    private DatabaseReference databaseReference;

    DAOUser(){

        FirebaseDatabase db = FirebaseDatabase.getInstance();
        databaseReference = db.getReference(User.class.getSimpleName());
    }

    //등록
    public Task<Void> add(User user){

        return databaseReference.push().setValue(user);
    }

    //조회
    public Query get(){

        return  databaseReference;
    }
}

 

3. 리스트 화면 만들기

 파일명: list_item

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

 

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

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

aries574.tistory.com

<?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:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:backgroundTint="#EFEBE9"
    android:orientation="vertical"
    app:cardCornerRadius="5dp"
    app:cardElevation="10dp">

    <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="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:textSize="25sp"
            android:textStyle="bold" />
    </LinearLayout>

</androidx.cardview.widget.CardView>

 

 

4. 어뎁터 클래스 만들기

파일명: UserAdapter

- 설명 - 

데이터와 화면을 연결해주는 기능을 합니다.

2021.12.31 - [안드로이드] - [안드로이드 스튜디오] 자바 클래스 생성하는 방법

 

[안드로이드 스튜디오] 자바 클래스 생성하는 방법

이번 시간에는 안드로이드 스튜디오(AndroidStudio)에서 자바 클래스 생성하는 방법을 알아보겠습니다. 기본으로 안드로이드 스튜디오 프로젝트를 생성하면 아래 화면처럼 MainActivity가 기본으로 생

aries574.tistory.com

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

    private Context context;

    ArrayList<User> list = new ArrayList<>();

    public UserAdapter(Context context, ArrayList<User> list) {
        this.context = context;
        this.list = list;
    }

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

        View view = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);

        return new UserVH(view);
    }

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

        User user = list.get(holder.getBindingAdapterPosition());

        //이름
        holder.nameText.setText(user.getUser_name());
    }

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


    class UserVH extends RecyclerView.ViewHolder {

        TextView nameText;

        CardView cardView;

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

            nameText = itemView.findViewById(R.id.name_text);
            cardView = itemView.findViewById(R.id.card_view);
        }
    }
}

 

4. 리스트 액티비티 만들기

app 선택 -> 마우스 오른쪽 클릭 -> New -> Activity -> Empty Activity

파일명: ListActivity

4-1 화면 activity_list.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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ListActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rv"/>

</LinearLayout>

 

4-2 코드 ListActivity.java

public class ListActivity extends AppCompatActivity {

    RecyclerView recyclerView;

    UserAdapter adapter;

    //데이터베이스 객체
    DAOUser dao;

    //키 변수
    String key = "";

    ArrayList<User> list = new ArrayList<>();

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

        recyclerView = findViewById(R.id.rv);

        recyclerView.setHasFixedSize(true);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(manager);

        //어뎁터 설정
        adapter = new UserAdapter(this, list);

        //리싸이클러뷰 어뎁터 설정
        recyclerView.setAdapter(adapter);

        //데이터베이스 초기화
        dao = new DAOUser();

        loadData();
    }

    private void loadData() {

        dao.get().addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                list.clear();

                for(DataSnapshot data : snapshot.getChildren()){

                    User user = data.getValue(User.class);

                    //키값 가져오기
                    key = data.getKey();

                    //키값 담기
                    user.setUser_key(key);

                    //리스트에 담기
                    list.add(user);
                }
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });
    }
}

 설명 파일 수정 AndroidManifest.xml

- 설명 - 

 1. 리스트화면에 뒤로가기 버튼이 생성되며, 뒤로가기를 누르면 메인화면으로 돌아옵니다.

        <activity
            android:name=".ListActivity"
            android:exported="false"
            android:parentActivityName=".MainActivity" />

 

5. 메인 화면 구성 activity_main.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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/name_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:hint="이름"/>

    <EditText
        android:id="@+id/age_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:hint="나이"/>

    <Button
        android:id="@+id/add_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="등록"/>

    <Button
        android:id="@+id/list_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="리스트"/>
</LinearLayout>

 

6. 메인 코드 구현 MainActivity.java

 - 설명 - 

 리스트버튼 기능 구현

            //리스트 버튼
            Button listBtn = findViewById(R.id.list_btn);
            listBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(MainActivity.this, ListActivity.class);
                    startActivity(intent);
                }
            });

 - 전체 코드 -

public class MainActivity extends AppCompatActivity {

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

            EditText name_edit = findViewById(R.id.name_edit);
            EditText age_edit = findViewById(R.id.age_edit);
            Button addBtn = findViewById(R.id.add_btn);

            DAOUser dao = new DAOUser();

            //등록버튼
            addBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    //입력값 변수에 담기
                    String name = name_edit.getText().toString();//이름
                    String age = age_edit.getText().toString();//나이

                    User user = new User("", name, age);

                    //데이터베이스 사용자 등록
                    dao.add(user).addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void unused) {
                            Toast.makeText(getApplicationContext(), "성공",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(getApplicationContext(), "실패:" + e.getMessage(),
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });

            //리스트 버튼
            Button listBtn = findViewById(R.id.list_btn);
            listBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(MainActivity.this, ListActivity.class);
                    startActivity(intent);
                }
            });
        }//onCreate
}

2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회

 

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 - 조회

앞으로 SQLite, RecyclerView를 통해서 연락처 만드는 방법을 알아보겠습니다. 내용이 많다 보니 조회, 등록, 수정, 삭제 별로 나눠 올리겠습니다. 이번에는 조회 부분입니다. 목차 1. 실행 화면 2. 연락

aries574.tistory.com

2022.03.03 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록

 

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록

이번 시간에는 이전에 이어서 연락처 등록하는 방법을 알아보겠습니다. 이전 포스팅을 먼저 보고 오시면 됩니다. 2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part1 -

aries574.tistory.com

2022.03.04 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세

 

[안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세

이번 시간에는 이전에 이어서 연락처 상세화면 만드는 방법을 알아보겠습니다. 이전 포스팅을 먼저 보시고 오시면 됩니다. 2022.03.02 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는

aries574.tistory.com

반응형

관련글 더보기

댓글 영역