Как сделать ProgressBar невидимым
Есть список картинок, сделанный через RecyclerView. При нажатии на картинку, пока она передается в следующую активити должен отображаться ProgressBar. Когда происходит возврат в активити выбора изображений, то ProgressBar также остается видимым, хотя должен быть скрытым
public ImageViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image_outline);
progressBar = itemView.findViewById(R.id.progr);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageOnClick.onClick(getAdapterPosition());
// по нажатию на картинку прогрессбар становится видимым
progressBar.setVisibility(ProgressBar.VISIBLE);
}
});
}
Адаптер
@Override
public void onBindViewHolder(@NonNull final ImageViewHolder holder, final int position) {
holder.imageView.setImageResource(listImages.get(position));
holder.setImageOnC(new ImageOnC() {
@Override
public void onClick(int pos) {
Common.PICTURE_SELECTED = listImages.get(pos);
mContext.startActivity(new Intent(mContext, Colorful.class));
}
});
}
Насколько я понял, то нужно добавить в адаптер еще onBindViewHolder для того, чтобы скрыть прогрессбар
@Override
public void onBindViewHolder(ImageViewHolder holder, int position, List<Object> payload) {
if (!payload.isEmpty()) {
if (payload.get(0) != null) {
holder.progressBar.setVisibility(View.GONE);
}
} else {
super.onBindViewHolder(holder, position, payload);
}
}
Если делать таким образом, то прогрессбар также остается видимым. Буду рад, если подскажете, что не так делаю.
Ответы (1 шт):
Автор решения: Circassian
→ Ссылка
В первой активити добавьте этот код:
@Override
public void onResume() {
super.onResume();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
}
Если вы сохраните position нажатого item'а, то лучше вызвать
adapter.notifyItemChanged(position);