
선택 위젯
: 여러 개의 아이템 중에 하나를 선택할 수 있는 리스트 모양의 위젯
- 선택 위젯에 있는 각각의 아이템들은 뷰가 아닌 '어댑터'에서 관리됩니다.
- 선택 위젯의 종류 중에는 리싸이클러뷰(RecyclerView)가 있습니다.
activity_main.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
- activity_main.xml에서 생성한 리싸이클러뷰는 일종의 껍데기 역할을 합니다.
- 즉 리스트가 어디서 보여질지, 그 위치만 지정하는 것이라고 생각하면 됩니다.
Person.java
public class Person {
String name;
String mobile;
public Person(String name, String mobile) {
this.name = name;
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String Mobile) {
this.mobile = mobile;
}
}
- Person클래스는 어댑터 안에 들어갈 각 아이템을 담아둘 클래스입니다.
- 즉 리스트에 들어갈 각각의 아이템에 대한 '틀'인 셈입니다.
PersonAdapter.java
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.ViewHolder> {
// 1. 어댑터의 주요 메서드 3가지
ArrayList<Person> items = new ArrayList<Person>();
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) [
// 인플레이션을 통해 뷰 객체 만들기
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
View itemView = inflater.inflater(R.layout.person_item, viewGroup, false);
// 뷰홀더 객체를 생성하면서 뷰 객체를 전달하고 그 뷰홀더 객체를 반환하기
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
Person item = items.get(position);
viewHolder.setItem(item);
}
@Override
public int getItemCount() {
return items.size();
}
// 2. 어댑터에 Person 객체를 넣거나 가져갈 수 있도록 해주는 메서드들
public void addItem(Person item) {
items.add(item);
}
public void setItems(ArrayList<Person> items) {
this.items = items;
}
public Person getItem(int position) {
return items.get(position);
}
public void setItem(int position, Person item) {
items.set(position, item);
}
// 3. ViewHolder 클래스
static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
TextView2 textView2;
public ViewHolder(View itemView) {
// 매개변수로 전달받은 뷰 객체를 부모 클래스의 변수에 담는다.
super(itemView);
textView = itemView.findViewById(R.id.textView);
textView2 = itemView.findViewById(R.id.textView2);
}
// 뷰홀더에 들어있는 뷰 객체의 데이터를 다른 것으로 보이도록 하는 함수
public void setItem(Person item) {
textView.setText(item.getName());
textView2.setText(item.getMobile());
}
}
}
- 리스트에 있는 각각의 아이템들은 '뷰'로 만들어지며, 이 뷰들은 '뷰홀더'에 담기게 됩니다.
MainActivity.java
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);
PersonAdapter adapter = new PersonAdapter();
adapter.addItem(new Person("김민수", "010-1000-1000"));
adapter.addItem(new Person("김하늘", "010-2000-2000"));
adapter.addItem(new Person("홍길동", "010-3000-3000"));
// 리싸이클러뷰에 어댑터 설정하기
recyclerView.setAdapter(adapter);
}
}
'Frontend > Android' 카테고리의 다른 글
안드로이드) 파이어베이스 Realtime Database + 리싸이클러뷰 (0) | 2022.01.04 |
---|---|
안드로이드) 파이어베이스 구글 로그인 (0) | 2022.01.04 |
안드로이드) 뒤로가기 2번 누르면 종료되게 하기 (0) | 2021.11.01 |

선택 위젯
: 여러 개의 아이템 중에 하나를 선택할 수 있는 리스트 모양의 위젯
- 선택 위젯에 있는 각각의 아이템들은 뷰가 아닌 '어댑터'에서 관리됩니다.
- 선택 위젯의 종류 중에는 리싸이클러뷰(RecyclerView)가 있습니다.
activity_main.xml
<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/>
- activity_main.xml에서 생성한 리싸이클러뷰는 일종의 껍데기 역할을 합니다.
- 즉 리스트가 어디서 보여질지, 그 위치만 지정하는 것이라고 생각하면 됩니다.
Person.java
public class Person { String name; String mobile; public Person(String name, String mobile) { this.name = name; this.mobile = mobile; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMobile() { return mobile; } public void setMobile(String Mobile) { this.mobile = mobile; } }
- Person클래스는 어댑터 안에 들어갈 각 아이템을 담아둘 클래스입니다.
- 즉 리스트에 들어갈 각각의 아이템에 대한 '틀'인 셈입니다.
PersonAdapter.java
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.ViewHolder> { // 1. 어댑터의 주요 메서드 3가지 ArrayList<Person> items = new ArrayList<Person>(); @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) [ // 인플레이션을 통해 뷰 객체 만들기 LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); View itemView = inflater.inflater(R.layout.person_item, viewGroup, false); // 뷰홀더 객체를 생성하면서 뷰 객체를 전달하고 그 뷰홀더 객체를 반환하기 return new ViewHolder(itemView); } @Override public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) { Person item = items.get(position); viewHolder.setItem(item); } @Override public int getItemCount() { return items.size(); } // 2. 어댑터에 Person 객체를 넣거나 가져갈 수 있도록 해주는 메서드들 public void addItem(Person item) { items.add(item); } public void setItems(ArrayList<Person> items) { this.items = items; } public Person getItem(int position) { return items.get(position); } public void setItem(int position, Person item) { items.set(position, item); } // 3. ViewHolder 클래스 static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; TextView2 textView2; public ViewHolder(View itemView) { // 매개변수로 전달받은 뷰 객체를 부모 클래스의 변수에 담는다. super(itemView); textView = itemView.findViewById(R.id.textView); textView2 = itemView.findViewById(R.id.textView2); } // 뷰홀더에 들어있는 뷰 객체의 데이터를 다른 것으로 보이도록 하는 함수 public void setItem(Person item) { textView.setText(item.getName()); textView2.setText(item.getMobile()); } } }
- 리스트에 있는 각각의 아이템들은 '뷰'로 만들어지며, 이 뷰들은 '뷰홀더'에 담기게 됩니다.
MainActivity.java
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); PersonAdapter adapter = new PersonAdapter(); adapter.addItem(new Person("김민수", "010-1000-1000")); adapter.addItem(new Person("김하늘", "010-2000-2000")); adapter.addItem(new Person("홍길동", "010-3000-3000")); // 리싸이클러뷰에 어댑터 설정하기 recyclerView.setAdapter(adapter); } }
'Frontend > Android' 카테고리의 다른 글
안드로이드) 파이어베이스 Realtime Database + 리싸이클러뷰 (0) | 2022.01.04 |
---|---|
안드로이드) 파이어베이스 구글 로그인 (0) | 2022.01.04 |
안드로이드) 뒤로가기 2번 누르면 종료되게 하기 (0) | 2021.11.01 |