상세 컨텐츠

본문 제목

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

안드로이드

by aries574 2022. 3. 14. 12:19

본문


이번 시간에는 Firebase Realtime Database에

등록된 사용자 정보를 가져와서 수정하고 다시

데이터베이스에 저장하는 방법을 알아보겠습니다.

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

오시면 됩니다. 

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

 

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

이번 시간에는 Firebase Realtime Database에 등록된 사용자 정보를 가져와서 리스트로 보여 주는 방법에 대하여 알아보겠습니다. 이전 포스팅에 이어서 하기 때문에 먼저 보시고 오시면 됩니다. 2022.03.

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. 어뎁터 클래스 이벤트 클릭


1. 실행 화면

 

2. 데이터베이스 기능 추가(수정)

 - 설명 - 

 데이터베이스에 사용자 정보를 업데이트합니다. 

DAOUser.java

    //수정
    public Task<Void> update(String key, HashMap<String, Object> hashMap){

        return databaseReference.child(key).updateChildren(hashMap);
    }

 - 전체 코드 -

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;
    }

    //수정
    public Task<Void> update(String key, HashMap<String, Object> hashMap){

        return databaseReference.child(key).updateChildren(hashMap);
    }

}

 

 

3. 수정 액티비티 만들기

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

파일명: UpdateActivity

3-1 화면 activity_update.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_vertical"
    tools:context=".UpdateActivity">

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

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

    <Button
        android:id="@+id/update_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="수정"/>
</LinearLayout>

 

3-2 코드 UpdateActivity.java

 - 설명 -

1. 어뎁터에서 받아온 데이터를 화면에 있는

 에디터텍스트에 넣어줍니다. 

 2. 수정된 데이터를 HashMap에 담아서 데이터베이스에

담아줍니다. 

public class UpdateActivity extends AppCompatActivity {

    EditText updateNameEdit, updateAgeEdit;

    String sKey, sName, sAge;

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

        DAOUser dao = new DAOUser();

        updateNameEdit = findViewById(R.id.update_name_edit); //이름
        updateAgeEdit = findViewById(R.id.update_age_edit); //번호

        getAndSetIntentData();

        Button updateBtn = findViewById(R.id.update_btn);
        updateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //변경값
                String uName = updateNameEdit.getText().toString();
                String uAge = updateAgeEdit.getText().toString();

                //파라미터 셋팅
                HashMap<String, Object> hashMap = new HashMap<>();
                hashMap.put("user_name", uName);
                hashMap.put("user_age", uAge);
//                    hashMap.put("user_age", sKey);

                dao.update(sKey, hashMap).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();
                    }
                });
            }
        });
    }

    /**
     * 데이터 가져와서 화면에 보여주기
     */
    public void getAndSetIntentData () {

        if (getIntent().hasExtra("key") && getIntent().hasExtra("name") &&
                getIntent().hasExtra("age") ) {

            //데이터 가져오기
            sKey = getIntent().getStringExtra("key");
            sName = getIntent().getStringExtra("name");
            sAge = getIntent().getStringExtra("age");

            //데이터 넣기
            updateNameEdit.setText(sName);
            updateAgeEdit.setText(sAge);
        }
    }
}

 

설명 파일 수정 AndroidManifest.xml

- 설명 - 

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

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


4. 어뎁터클래스 이벤트 클릭 추가

 - 설명 - 

 카드뷰에 클릭이벤트를 구현하고, Intent를 통해 수정 액티비티로 

데이터를 넘겨줍니다. 

holder.cardView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        Intent intent = new Intent(context, UpdateActivity.class);
        intent.putExtra("key",   user.getUser_key());
        intent.putExtra("name",  user.getUser_name());
        intent.putExtra("age",   user.getUser_age());
        context.startActivity(intent);
    }
});

- 전체 코드 -

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());


        holder.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(context, UpdateActivity.class);
                intent.putExtra("key",   user.getUser_key());
                intent.putExtra("name",  user.getUser_name());
                intent.putExtra("age",   user.getUser_age());
                context.startActivity(intent);
            }
        });
    }

    @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);
        }
    }
}

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

반응형

관련글 더보기

댓글 영역