이번 시간에는 RecyclerView로 리스트를 생성하고, 다중 선택을
하는 방법을 알아보겠습니다.
public class Item {
private String name;
private boolean isSelected;
public Item(String name, boolean isSelected) {
this.name = name;
this.isSelected = isSelected;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean selected) {
isSelected = selected;
}
}
2021.12.31 - [안드로이드] - [안드로이드 스튜디오] 자바 클래스 생성하는 방법
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="25sp"
android:textStyle="bold" />
</LinearLayout>
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
Context context;
ArrayList<Item> arrayList;
public ItemAdapter(Context context, ArrayList<Item> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.list_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Item item = arrayList.get(position);
holder.textView.setText(item.getName());
///선택값에 따른 배경색 설정
if(item.isSelected()){
holder.itemView.setBackgroundColor(Color.parseColor("#90CAF9"));
}else{
holder.itemView.setBackgroundColor(Color.parseColor("#EF9A9A"));
}
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
LinearLayout layout;
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
layout = itemView.findViewById(R.id.layout);
textView = itemView.findViewById(R.id.textView);
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setMultipleSelection(getAdapterPosition());
}
});
}
}
//다중 선택 기능
private void setMultipleSelection(int adapterPosition){
//반대의 값을 넣어준다.
if(arrayList.get(adapterPosition).isSelected()){
arrayList.get(adapterPosition).setSelected(false);
}else{
arrayList.get(adapterPosition).setSelected(true);
}
//데이터 적용
notifyDataSetChanged();
}
}
<?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"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
//선언
RecyclerView recyclerView;
ArrayList<Item> arrayList = new ArrayList<>();
ItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//초기화
recyclerView = findViewById(R.id.recyclerView);
//초기화
adapter = new ItemAdapter(MainActivity.this, getData());
//레이아웃 설정
recyclerView.setLayoutManager(new LinearLayoutManager(this));
//구분선 설정
recyclerView.addItemDecoration(new DividerItemDecoration(this,
LinearLayoutManager.VERTICAL));
//어뎁터 적용
recyclerView.setAdapter(adapter);
}
//데이터 생성
private ArrayList<Item> getData(){
for(int i = 0; i < 10; i++){
arrayList.add(new Item(i +"번쨰 아이템", false));
}
return arrayList;
}
}//MainActivity
2022.04.02 - [안드로이드] - [안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면 구성
2022.04.03 - [안드로이드] - [안드로이드] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기& 보여주기
2022.04.04 - [안드로이드] - [안드로이드] 같은 그림 찾기 게임 만드는 방법 part3 - 클릭&뒤집기
[안드로이드] Tab Custom Animation part1 - 화면 구성 (0) | 2022.04.08 |
---|---|
[안드로이드] 코드(MainActivity) 에서 배경색상 바꾸는 다양한 방법 (0) | 2022.04.07 |
[안드로이드] 같은 그림 찾기 게임 만드는 방법 part4 - 비교&완료 (0) | 2022.04.05 |
[안드로이드] 같은 그림 찾기 게임 만드는 방법 part3 - 클릭&뒤집기 (0) | 2022.04.04 |
[안드로이드] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기& 보여주기 (0) | 2022.04.03 |
댓글 영역