조금 복잡하므로 작업 순서와 (작업 클래스 또는 액티비티) 로 설명하려한다.
1. 새로운 자바 클래스 생성, RecyclerView 상속
RecyclerView.Adapter 로 변경.
빨간줄 확인하고 unimplemented method 3개 다 만들기
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ViewHolder> {
@NonNull
@Override
public RecyclerView.Adapter onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.Adapter holder, int position) {
}
@Override
public int getItemCount() {
}
2. 클래스 안쪽에 ViewHolder 클래스 만들기
3. 생성자 안에다가 연결시키는 코드 작성
// 2. ViewHolder 클래스를 만든다.
public class ViewHolder extends RecyclerView.ViewHolder{
TextView txtName;
TextView txtPhone;
ImageView imgDelete;
CardView cardView;
// 3. 생성자 안에다가 연결시키는 코드 작성
public ViewHolder(@NonNull View itemView) {
super(itemView);
// findViewbyID 가 안되는 이유는 자동으로 xml과 연결되는 액티비티가 아니기 때문에
// txtName = findViewbyID
txtName = itemView.findViewById(R.id.txtName);
txtPhone = itemView.findViewById(R.id.txtPhone);
imgDelete = itemView.findViewById(R.id.imgDelete);
});
이 클래스는 row.xml 화면에 있는 뷰를 연결시키는 클래스이다.
에러표시로 생성자도 생성해준다.
화면과 연결할 자바 변수를 만든다.
4. 다시 위로 올라가 어댑터 클래스의 멤버변수와 생성자를 만들어준다.
// 4. 어댑터 클래스의 멤버변수와 생성자를 만들어준다.
// Context로 소속정보 알려주기
Context context;
List<Contact> contactList;
5. RecyclerView.Adapter에 <ContactAdapter.ViewHolder>추가하기 , 에러가 뜬다.
// 5. RecyclerView.Adapter에 <ContactAdapter.ViewHolder>추가하기 , 에러가 뜬다.
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ViewHolder> {
6. 처음 만들어진 3개의 메소드를 다음과 같이 변경
// 6. 아래 함수를 구현. RecyclerView.Adapter >>> ContactAdapter.ViewHolder // 액티비티가 아닌 파일을 연결하는 과정.
@NonNull
@Override
public ContactAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.contact_row, parent , false);
return new ContactAdapter.ViewHolder(view);
}
// 메모리에 있는 데이터(리스트)를 화면에 표시하는 함수.
// 6. 아래 함수를 구현. RecyclerView.Adapter >>> ContactAdapter.ViewHolder
@Override
public void onBindViewHolder(@NonNull ContactAdapter.ViewHolder holder, int position) {
Contact contact = contactList.get(position);
holder.txtName.setText(contact.name);
holder.txtPhone.setText(contact.phone);
}
7. 이제 MainActivity로 가서 onCreate 함수 안에서 리사이클러뷰를 실행하기 위한 코드를 작성해준다.
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
8. 마지막으로 DB에서 주소록 데이터를 모두 가져와 표시하도록 setAdapter 메소드를 사용하면 된다.
// DB 에서 주소록 데이터를 모두 가져와서, 리사이클러뷰에 표시한다.
DatabaseHandler db = new DatabaseHandler(MainActivity.this);
contactList = db.getAllContacts();
adapter = new ContactAdapter(MainActivity.this, contactList);
recyclerView.setAdapter(adapter);
'Android' 카테고리의 다른 글
Android Studio - 에뮬레이터 한글 키보드 사용가능하게 세팅하기 (0) | 2022.07.15 |
---|---|
Android Studio - 다른 액티비티로 데이터 전달 시, 클래스의 객체를 전달하는 방법 (0) | 2022.07.15 |
Android Studio - 빠르게 Linear Layout Resource 파일 만들기 (0) | 2022.07.14 |
Android Studio - ArrayList 에 저장된 데이터를 가져와 처리하는데 좋은 반복문 코드 (0) | 2022.07.14 |
Android Studio - SQLite3 데이터베이스 활용하는 방법 (0) | 2022.07.14 |
댓글