이번 시간에는 등록한 사용자를 리스트로 보여주는 방법에 대하여 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.05.15 - [안드로이드] - [안드로이드] Database Room 사용법 part2 - 데이터 등록
- 설명 -
1. 이름과 나이를 텍스트 뷰로 보여줍니다.
<?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>
- 설명 -
1. 데이터와 아이템 화면을 연결해주는 클래스
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);
}
}
}
- 설명 -
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 - 간단한 요청 및 응답
2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성
2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성
[안드로이드] Database Room 사용법 part5 - 삭제 (0) | 2022.05.18 |
---|---|
[안드로이드] Database Room 사용법 part4 - 수정 (0) | 2022.05.17 |
[안드로이드] Database Room 사용법 part2 - 데이터 등록 (0) | 2022.05.15 |
[안드로이드] Database Room 사용법 part1 - Room 설정 (1) | 2022.05.14 |
[안드로이드] LiveData 만드는 방법 part2 - 레이아웃에 ViewModel 직접 적용 (0) | 2022.05.13 |
댓글 영역