이번 시간에는 Firebase Realtime Database에
등록된 사용자 정보를 가져와서 수정하고 다시
데이터베이스에 저장하는 방법을 알아보겠습니다.
이전 포스팅에 이어서 하기 때문에 먼저 보시고
오시면 됩니다.
2022.03.13 - [안드로이드] - [안드로이드] Firebase Realtime Database RecyclerView 사용자 리스트 보는 방법
Firebase Realtime Database 설정 부분은 아래 링크를
따라 하시면 됩니다.
2022.03.09 - [안드로이드] - [안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part1
데이터베이스에 사용자 정보를 업데이트합니다.
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);
}
}
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
- 설명 -
카드뷰에 클릭이벤트를 구현하고, 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 - 조회
2022.03.03 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part2 - 등록
2022.03.04 - [안드로이드] - [안드로이드] SQLite RecyclerView 연락처 만드는 방법 part3 - 상세
[안드로이드] Firebase Storage 이미지 업로드 part1 (2) | 2022.03.16 |
---|---|
[안드로이드] Firebase Realtime Database RecyclerView 사용자 삭제하는 방법 (0) | 2022.03.15 |
[안드로이드] Firebase Realtime Database RecyclerView 사용자 리스트 보는 방법 (2) | 2022.03.13 |
[안드로이드] Firebase Realtime Database RecyclerView 사용자 등록하는 방법 (0) | 2022.03.12 |
[안드로이드] Firebase Realtime Database ListView JSON 수정, 삭제 part3 (0) | 2022.03.11 |
댓글 영역