ImageItemAdapter.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.datarecovery.master.module.imgrecover;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.ViewGroup;
  5. import androidx.annotation.NonNull;
  6. import androidx.lifecycle.LifecycleOwner;
  7. import androidx.recyclerview.widget.RecyclerView;
  8. import com.atmob.common.logging.AtmobLog;
  9. import com.datarecovery.master.databinding.ItemDataImgBinding;
  10. import com.datarecovery.master.sdk.bugly.BuglyHelper;
  11. import com.datarecovery.master.utils.ImageDeepDetector;
  12. import java.util.List;
  13. public class ImageItemAdapter extends RecyclerView.Adapter<ImageItemAdapter.ViewHolder> {
  14. private List<ImageDeepDetector.ImageFile> list;
  15. private final LifecycleOwner lifecycleOwner;
  16. private final String type;
  17. private int size;
  18. private onItemClick onItemClick;
  19. public ImageItemAdapter(String type, LifecycleOwner lifecycleOwner) {
  20. this.type = type;
  21. this.lifecycleOwner = lifecycleOwner;
  22. }
  23. public void setOnItemClick(ImageItemAdapter.onItemClick onItemClick) {
  24. this.onItemClick = onItemClick;
  25. }
  26. @NonNull
  27. @Override
  28. public ImageItemAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  29. Context context = parent.getContext();
  30. LayoutInflater layoutInflater = LayoutInflater.from(context);
  31. ItemDataImgBinding binding = ItemDataImgBinding.inflate(layoutInflater, parent, false);
  32. return new ImageItemAdapter.ViewHolder(binding);
  33. }
  34. @Override
  35. public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
  36. if (position < 0 || position >= list.size()) {
  37. BuglyHelper.postCatchedException(new IndexOutOfBoundsException("图片列表onBindViewHolder出现数组越界:type:" + type + "," + position + ",size:" + list.size()));
  38. return;
  39. }
  40. holder.bind(list.get(position));
  41. }
  42. public void submit(List<ImageDeepDetector.ImageFile> imageList) {
  43. if (imageList == null) {
  44. return;
  45. }
  46. int itemCount;
  47. if (list != null) {
  48. itemCount = imageList.size() - size;
  49. } else {
  50. itemCount = imageList.size();
  51. }
  52. this.size = imageList.size();
  53. this.list = imageList;
  54. if (itemCount >= 0) {
  55. notifyItemRangeInserted(0, itemCount);
  56. }
  57. }
  58. @Override
  59. public int getItemCount() {
  60. return (list == null) ? 0 : list.size();
  61. }
  62. public class ViewHolder extends RecyclerView.ViewHolder {
  63. ItemDataImgBinding binding;
  64. public ViewHolder(@NonNull ItemDataImgBinding binding) {
  65. super(binding.getRoot());
  66. this.binding = binding;
  67. binding.setLifecycleOwner(lifecycleOwner);
  68. binding.setCheckBoxClick(v -> {
  69. if (onItemClick != null) {
  70. onItemClick.onCheck(binding.getFile());
  71. }
  72. });
  73. binding.getRoot().setOnClickListener(v -> {
  74. if (onItemClick != null) {
  75. onItemClick.onImgItemClick(binding.getFile());
  76. }
  77. });
  78. }
  79. public void bind(ImageDeepDetector.ImageFile imageFile) {
  80. binding.setFile(imageFile);
  81. }
  82. }
  83. public interface onItemClick {
  84. void onCheck(ImageDeepDetector.ImageFile imageFile);
  85. void onImgItemClick(ImageDeepDetector.ImageFile imageFile);
  86. }
  87. }