애플리케이션을 이용하면서 몇 가지의 아이템(항목)들이 리스트로 하여금 세로로 드래그하여 넘길 수 있는 화면을 많이 보았을 것입니다.
예를 들어 카카오톡의 채팅 화면에서 하나의 뷰에 단톡방 사진, 단톡방 이름, 단톡방 인원수로 각각의 아이템으로 이뤄진 것을 확인할 수 있습니다.
| 리사이클러뷰란?
이런 리스트 모양으로 화면은 리사이클러뷰를 사용하여 제작할 수 있습니다.
하지만 단순히 리사이클러뷰로만 화면이 이루어지는 것이 아니라 Adapter라는 클래스를 이용하여 데이터를 직접 리사이클러뷰에서 사용하지 않고 Adapter에서 사용합니다.
여러 개의 아이템이 표시되는 곳은 어댑터를 통하여 각 아이템이 화면에 구성됩니다.
- 리사이클러뷰 만들기 위한 순서 -
1. Adapter 안에 담길 각각의 아이템의 정보를 담은 클래스를 하나 생성합니다.
2. 각각의 아이템을 위한 xml 레이아웃 파일을 만듭니다.
3. Adapter를 만듭니다.
4. 2번에서 만들었던 Adapter가 담긴 recyclerView를 액티비티에 작성해 줍니다.
<Adapter 안에 담길 각각의 아이템의 정보를 담은 클래스를 하나 생성하기>
각각의 아이템의 정보를 담을 클래스를 하나 생성해 줍니다.
여기서는 이름, 나이, 번호를 담기 위해 name, age, number 3가지로 작성했습니다.
-Info-
public class Info {
String name;
String age;
String number;
public Info(String name, String age, String number) {
this.name = name;
this.age = age;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
이렇게 name, age, number를 마우스 오른쪽 버튼 후 generate - constructor, getter&setter를 이용하여 작성해 줍니다.
<각각의 아이템을 위한 xml 레이아웃 파일을 만들기>
name, age, number가 textView_1,2,3으로 각각 들어갈 수 있는 xml 파일을 생성해 줍니다.
<Adapter를 만들기>
-InfoAdapter-
public class InfoAdapter extends RecyclerView.Adapter<InfoAdapter.ViewHolder>{
ArrayList<Info> items = new ArrayList<Info>();
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.info, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Info item = items.get(position);
holder.setItem(item);
}
@Override
public int getItemCount() {
return items.size();
}
public void addItem(Info item) {
items.add(item);
}
public void setItems(ArrayList<Info> items) {
this.items = items;
}
public Info getItem(int position) {
return items.get(position);
}
public void setItem(int position, Info item) {
items.set(position, item);
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView1;
TextView textView2;
TextView textView3;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView1 = itemView.findViewById(R.id.textView_1);
textView2 = itemView.findViewById(R.id.textView_2);
textView3 = itemView.findViewById(R.id.textView_3);
}
public void setItem(Info item){
textView1.setText(item.getName());
textView2.setText(item.getAge());
textView3.setText(item.getNumber());
}
}
}
Adapter에서 각각의 아이템이 들어간 뷰는 뷰홀더에 담아둘 수 있도록 합니다.
onCreateViewHolder()는 뷰홀더가 생성됐을 때 인플레이션을 통해 뷰 개체를 만들어 그 뷰 객체를 전달하고 반환합니다.
onBindViewHolder()는 재활용할 수 있는 뷰홀더 객체를 전달해 사용하기 때문에 현재 아이템에 일치하는 데이터를 이용합니다.
이러한 식으로 Adapter를 작성해 줍니다.
<아까 만들었던 Adapter가 담긴 recyclerView를 액티비티에 작성해 주기>
-MainActivity-
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
InfoAdapter adapter = new InfoAdapter();
adapter.addItem(new Info("홍길동", "20", "111"));
recyclerView.setAdapter(adapter);
}
}
activity_main.xml에 recyclerView를 집어넣고 레이아웃 매니저를 이용하여
리사이클러뷰가 보일 가로, 세로방향을 설정할 수 있습니다.
그리고 adapter.addItem(new Info("", "", ""));을 이용해 아이템을 추가할 수 있습니다.
'안드로이드 스튜디오 앱 개발 > 개념 안드로이드 스튜디오' 카테고리의 다른 글
자바(JAVA) 언어에 대해서 확실하게 알아보자!! 그리고 자바의 객체 지향 프로그래밍이란? (0) | 2023.06.22 |
---|---|
안드로이드 스튜디오 드로어블 객체로 배경 지정하기(자바 코드) (0) | 2023.06.20 |
안드로이드 스튜디오 리사이클러뷰 아이템 전체 삭제 clear() [Android Studio] (0) | 2023.06.19 |
안드로이드 스튜디오 타이틀 바 글자 폰트와 색 변경하기 [Android Studio] (0) | 2023.06.15 |
액티비티와 액티비티 간의 화면 전환 [Android Studio] (0) | 2023.06.13 |