안녕하세요. 안드로이드 공부중 궁금한게 있어서 질문 올립니다.
아래 코드에 보면 private recyclerViewClickListener mListener라는 부분이 있는데
이부분은 recyclerViewClickListener 인터페이스를 변수화 시킨것이라고 보면 되는것인가요?
그리고 이 부분을 넣어주는 이유는 무엇인가요?
public class recyclerAdpater extends RecyclerView.Adapter<recyclerAdpater.ViewHolder> {
private final List<Item> mDataList;
public interface recyclerViewClickListener {
void onItemClicked(int position);
void onShareButtonClicked(int position);
void onLearnMoreButtonClicked(int position);
}//인터페이스 메소드 선언
private recyclerViewClickListener mListener;
public void setOnClickedListener(recyclerViewClickListener listener) {
mListener = listener;
}
public recyclerAdpater(List<Item> datalist) { //생성자
mDataList = datalist;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Item item = mDataList.get(position);
holder.title.setText(item.getTitle());
holder.contents.setText(item.getContents());
if (mListener != null) {
final int pos = position;
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onItemClicked(pos);
}
});
holder.share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onShareButtonClicked(pos);
}
});
holder.more.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onLearnMoreButtonClicked(pos);
}
});
}
}
@Override
public int getItemCount() {
return mDataList.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView title;
TextView contents;
Button share;
Button more;
public ViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.titleText);
contents = itemView.findViewById(R.id.contentText);
share = itemView.findViewById(R.id.shareButton);
more = itemView.findViewById(R.id.seeButton);
}
}
}