Refre sh recyclerview, когда пользователь делает снимок - PullRequest
0 голосов
/ 01 августа 2020

У меня есть фрагмент, который отображает самые последние изображения пользователей на их устройствах. Однако это обновляется только тогда, когда пользователь смахивает от фрагмента и возвращается к нему. Я хотел бы сделать так, чтобы изображения обновлялись после того, как снимок сделан автоматически (не нужно смахивать и возвращаться к фрагменту). Как я могу go сделать это?

Код адаптера:

public class RecentPhotosAdapter extends RecyclerView.Adapter < RecentPhotosAdapter.ViewHolder > {

  // Variables
  private Context mContext;
  private ArrayList < String > mImage;
  private int VIEW_TYPE_DEFAULT = 0;
  private int VIEW_TYPE_IMAGE = 1;

  // Limit the recent photo selection
  int RECENT_PHOTO_LIMIT = 7;

  public RecentPhotosAdapter(Context mContext, ArrayList < String > mImage) {
    this.mContext = mContext;
    this.mImage = mImage;
  }

  @NonNull
  @Override
  public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    if (viewType == VIEW_TYPE_IMAGE) {

      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recent_photos_item, parent, false);
      return new ViewHolder(view);
    } else {
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.default_select_photos_item, parent, false);
      return new ViewHolder(view);
    }

  }

  @Override
  public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    if (position < Math.min(mImage.size(), RECENT_PHOTO_LIMIT)) {
      String images = mImage.get(position);

      // Recent Photos
      Glide.with(mContext)
        .load(images)
        .placeholder(R.drawable.background_gallery_placeholder)
        .transform(new CenterCrop(), new RoundedCorners(30))
        .into(holder.recent_photos_iv);

      // Default select photos
      holder.recent_photos_iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

          // Open horizontalScrollGallery
          Intent intent = new Intent(mContext, HorizontalScrollGalleryActivity.class);
          intent.putExtra("position", String.valueOf(position));
          mContext.startActivity(intent);
        }
      });
    } else {
      holder.default_select_photo_iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
          // Open SelectImageActivity onClick
          Intent intent = new Intent(mContext, SelectImageActivity.class);
          mContext.startActivity(intent);
        }
      });

      // Open SelectImageActivity when user scrolls to the end of recent images
      Intent intent = new Intent(mContext, SelectImageActivity.class);
      mContext.startActivity(intent);
    }
  }

  @Override
  public int getItemViewType(int position) {
    return (position == Math.min(mImage.size(), RECENT_PHOTO_LIMIT)) ? VIEW_TYPE_DEFAULT : VIEW_TYPE_IMAGE;
  }

  @Override
  public int getItemCount() {
    return Math.min(mImage.size(), RECENT_PHOTO_LIMIT) + 1;
  }

  public class ViewHolder extends RecyclerView.ViewHolder {

    ImageView recent_photos_iv;
    ImageView default_select_photo_iv;

    public ViewHolder(View itemView) {
      super(itemView);
      recent_photos_iv = itemView.findViewById(R.id.recent_photos_iv);
      default_select_photo_iv = itemView.findViewById(R.id.default_select_photo_iv);

    }
  }
}

1 Ответ

0 голосов
/ 01 августа 2020

Согласно коду, вы перемещаете другой экран для захвата изображения. После захвата изображения вы снова вернетесь на экран адаптера, когда вы вернетесь на тот же экран, вам необходимо обновить sh адаптер, позвонив:

mAdapter.notifyDataSetChanged()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...