상세 컨텐츠

본문 제목

[안드로이드] Firebase Realtime Database ListView JSON 읽기, 쓰기 part2

안드로이드

by aries574 2022. 3. 10. 18:00

본문


이번 시간에는 Firebase Realtime Database에

데이터를 추가하고, 다시 호출해서 ListView를

통해 보여주는 읽기, 쓰기 예제를 만들어 보겠습니다.

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. 메인 화면 구성 activity_main.xml

3. 메인 코드 구현 MainActivity.java


1. 실행 화면


2. 메인 화면 구성 activity_main.xml

 - 설명 - 

 1. EditText: 등록할 데이터 입력창

 2. Button: 리스트뷰와 realtime database에 데이터 입력 기능

 3. ListView: 등록한 데이터 보여주는 뷰

<?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:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/name_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="name" />

    <Button
        android:id="@+id/add_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="쓰기" />

    <ListView
        android:id="@+id/list_View"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="8dp" />
    
</LinearLayout>

 


3. 메인 코드 구현 MainActivity.java

- 설명 - 

1. databaseReference.child(키값). child("이름"). setValue("데이터 값")

databaseReference에 키값, 이름값, 데이터 값을 입력하면 저장된다.

2. addValueEventListener를 통해 데이터를 가져온다. 

3. 데이터 호출 오류 시 onCancelled가 호출된다. 

public class MainActivity extends AppCompatActivity {

    ArrayList<String> arrayList = new ArrayList<>();
    ArrayAdapter<String> adapter;

    FirebaseDatabase firebaseDatabase;
    DatabaseReference databaseReference;

    ListView listView;

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

        //컴포넌트 변수에 담기
        EditText nameEdit = findViewById(R.id.name_edit);
        Button addBtn = findViewById(R.id.add_btn);
        listView = findViewById(R.id.list_View);

        //어뎁터 초기화
        adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, arrayList);
        
        //데이터베이스 초기화
       firebaseDatabase = FirebaseDatabase.getInstance();

       //레퍼런스 초기화
        databaseReference = firebaseDatabase.getReference().child("Data");

        //데이터 조회
        getValue();

        //데이터 등록
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //입력값 변수에 담기
                String sName = nameEdit.getText().toString();

                //키 생성
                String sKey = databaseReference.push().getKey();

                //sKey가 null이 아니면 sKey값으로 데이터를 저장한다.
                if(sKey != null){
                    databaseReference.child(sKey).child("value").setValue(sName);
                    
                    //입력창 초기화
                    nameEdit.setText("");
                }
            } //onClick
        });//setOnClickListener
    }//onCreate


    /**
     * 파이어베이스에서 데이터 가져오기
     */
    private void getValue() {

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

                //리스트 초기화
               arrayList.clear();

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

                   //데이터 가져오기(value 이름으로 된 값을 변수에 담는다.
                   String sValue = dataSnapshot.child("value").getValue(String.class);

                   //리스트에 변수를 담는다.
                   arrayList.add(sValue);
               }
               
               //리스트뷰 어뎁터 설정
               listView.setAdapter(adapter);
            }

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

                Toast.makeText(MainActivity.this, "error: " + error.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
        });
    }//getValue
}

2022.03.08 - [안드로이드] - [안드로이드] 달력 (DatePicker) 버튼(Button)으로 호출하는 방법

 

[안드로이드] 달력 (DatePicker) 버튼(Button) 으로 호출하는 방법

이번 시간에는 DatePicker 컴포넌트를 화면에 태그로 보여주는 방법이 아니라 버튼을 누르면 코드에서 호출 하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 3. 메인

aries574.tistory.com

2022.03.07 - [안드로이드] - [안드로이드] 버튼이 보라색으로 고정된 상황 쉽게 해결하는 방법

 

[안드로이드] 버튼이 보라색으로 고정된 상황 쉽게 해결하는 방법

이번 시간에는 안드로이드 스튜디오에서 업데이트를 했더니 버튼이 보라색으로 고정되어 있는 상황을 해결하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 테마 변경 해결법 3. 태그 변경 해

aries574.tistory.com

2022.03.01 - [안드로이드] - [안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법

 

[안드로이드] 온보딩(Onboarding) 페이지 쉽게 만드는 방법

이번 시간에는 앱 실행 시에 앱에 관한 설명들을 페이지 형태로 넘겨가면서 보여주는 형태인 온보딩(Onboarding) 페이지 만드는 방법에 대하여 알아보겠습니다. 1. 실행 화면 2. 라이브러리 등록

aries574.tistory.com

반응형

관련글 더보기

댓글 영역