[Android] ListView보다 좋은 것 RecyclerView
Dependencies에서 Library 검색으로 RecyclerView 추가
ListView보다 메모리 적게 잡아먹는다고 함 :)
Adapder 만들 때는 RecyclerView.Adapter<커스텀 뷰 홀더> 를 상속받는다
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ItemViewHolder>{
class ItemViewHolder extends RecyclerView.ViewHolder {
public ItemViewHolder(View itemView) {
super(itemView);
}
}
}
먼저 RecyclerAdapter에 extends RecyclerView.Adapder<>를 작성하고
내부에 class ItemViewHolder extends RecyclerView.ViewHolder 작성
ItemViewHolder에 Alt+Enter로 생성자 추가(안드로이드 스튜디오에서 사용)
위에 비어있는 <>안에 어뎁터클래스이름.ItemViewHolder으로 작성 후 Alt+Enter로 메소드 오버라이딩
이때 만든 ItemViewHolder 클래스가 보여질 뷰에 대한 내용이다
class ItemViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ItemViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv);
}
}
recyclerView가 사용할 layout에 있는 사용할 변수를 모두 선언하여 ItemViewHolder 작성
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item,parent,false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
DataDTO data = list.get(position);
String msg = data.getH() + "(" + data.getK() + "):"+data.getT();
holder.textView.setText(msg);
}
오버라이딩된 메소드에 내용 작성
---------------------------------------
Item = int ImageId, String flagName을 가지고 있음
item.xml = ImageView (id:iv), TextView (id:tv)를 가지고 있음
public class RecyclerAdapter
extends RecyclerView.Adapter<RecyclerAdapter.ItemViewHolder>{
List<Item> list;
public RecyclerAdapter(List<Item> list) {
this.list = list;
}
@NonNull
@Override
public ItemViewHolder onCreateViewHolder
(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item,parent,false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder
(@NonNull ItemViewHolder holder, int position) {
Item data = list.get(position);
holder.imageView.setImageResource(data.getImageID());
holder.textView.setText(data.getFlagName());
}
@Override
public int getItemCount() {
return list.size();
}
class ItemViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView;
public ItemViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.iv);
textView = itemView.findViewById(R.id.tv);
}
}
}
주황색으로 된 부분은 만든 클래스나 만든 Layout XML 파일을 참고하여 작성하면 된다
'게임 개발 초보자 > 안드로이드 연습장' 카테고리의 다른 글
[Android] Adapter extends BaseAdapter 어뎁터 만들기 (0) | 2018.06.07 |
---|---|
[Android] raw폴더의 txt파일 읽어오기 (0) | 2018.06.05 |
[Android] ListView, RecyclerView 데이터 추가할 경우 (0) | 2018.06.05 |
[Android] DTO? VO? 만들기 (0) | 2018.06.04 |
[Android] ExtendableListView 만들기 (0) | 2018.06.04 |