회사는 정말 싫어욧

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 파일을 참고하여 작성하면 된다

메소드는 상속(extends)가 끝난 후 안드로이드 스튜디오의 Alt+Enter를 이용하여 메소드 오버라이딩