728x90
어뎁터 코드
처리 과정 주석처리
public class PostingAdapter extends RecyclerView.Adapter<PostingAdapter.ViewHolder> {
Context context;
ArrayList<Posting> postingList;
SimpleDateFormat sf;
SimpleDateFormat df;
public interface OnItemClickListener {
// fragment에서 사용 가능하도록
// adpater의 특정 행이나 버튼을 누르면 처리할 함수를 만든다.
void likeProcess(int index);
void onImageClick(int index);
}
public OnItemClickListener listener;
public void setOnItemClickListener(OnItemClickListener listener){
this.listener = listener;
}
public PostingAdapter(Context context, ArrayList<Posting> postingList) {
this.context = context;
this.postingList = postingList;
// UTC => Local Time
sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sf.setTimeZone(TimeZone.getTimeZone("UTC"));
df.setTimeZone(TimeZone.getDefault());
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.posting_row, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Posting posting = postingList.get(position);
holder.txtContent.setText(posting.getContent());
holder.txtEmail.setText(posting.getEmail());
try {
Date date = sf.parse(posting.getCreatedAt());
holder.txtCreatedAt.setText( df.format(date) );
} catch (ParseException e) {
e.printStackTrace();
}
if(posting.getIsLike() == 1){
holder.imgLike.setImageResource(R.drawable.ic_thumb_up_2);
}else {
holder.imgLike.setImageResource(R.drawable.ic_thumb_up_1);
}
Glide.with(context)
.load(posting.getImgUrl())
.placeholder(R.drawable.outline_photo_24)
.into(holder.imgPhoto);
}
@Override
public int getItemCount() {
return postingList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
CardView cardView;
TextView txtContent;
TextView txtEmail;
TextView txtCreatedAt;
ImageView imgLike;
ImageView imgPhoto;
public ViewHolder(@NonNull View itemView) {
super(itemView);
cardView = itemView.findViewById(R.id.cardView);
txtContent = itemView.findViewById(R.id.txtContent);
txtEmail = itemView.findViewById(R.id.txtEmail);
txtCreatedAt = itemView.findViewById(R.id.txtCreatedAt);
imgLike = itemView.findViewById(R.id.imgLike);
imgPhoto = itemView.findViewById(R.id.imgPhoto);
imgLike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 1. 어느번째의 데이터의 좋아요를 누른것인지 확인
int index = getAdapterPosition();
// ((MainActivity)context).likeProcess(index);
// ((FirstFragment)((MainActivity)context).firstFragment).likeProcess(index);
listener.likeProcess(index);
}
});
imgPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = getAdapterPosition();
listener.onImageClick(index);
}
});
}
}
}
Fragment
위에서 만든 인터페이스의 함수를 아래 코드처럼 오버라이딩 해준다!
adapter = new PostingAdapter(getActivity(),postingList);
adapter.setOnItemClickListener(new PostingAdapter.OnItemClickListener() {
@Override
public void likeProcess(int index) {
FirstFragment.this.likeProcess(index);
}
@Override
public void onImageClick(int index) {
Posting posting = postingList.get(index);
String imgUrl = posting.getImgUrl();
Intent intent = new Intent(getActivity(),PhotoActivity.class);
intent.putExtra("imgUrl",imgUrl);
startActivity(intent);
}
});
recyclerView.setAdapter(adapter);
}else{
progressBar.setVisibility(View.GONE);
return;
'Android Studio' 카테고리의 다른 글
Android - 카카오 로그인 API를 이용해 간편 로그인 기능 구현하기 (0) | 2023.04.03 |
---|---|
Android - Fragment 탭바를 이용하여 각각의 다른 화면으로 전환하기 (0) | 2023.02.15 |
Android - Retrofit Multipart 사용 방법, 파일 업로드하기 (0) | 2023.02.14 |
Android - 카메라와 사진첩을 이용하여 이미지 뷰에 사진 출력하기 (0) | 2023.02.13 |
Android - 네트워크 통신 Retrofit2 Library (0) | 2023.02.09 |