Я уже реализовал слайдер изображений с помощью view-pager в моем домашнем фрагменте. и когда пользователь нажимает на изображение, открывается новый фрагмент и показывает заголовок этого изображения в зависимости от положения изображения. Единственная проблема, с которой я сталкиваюсь сейчас, это когда пользователь находится во фрагменте, где будет показан заголовок изображения. и изменения данных, сделанные в Firebase firestore, не обновляются в режиме реального времени. Пользователь должен вернуться к домашнему фрагменту, а затем снова нажать на изображение, чтобы увидеть эти изменения. Как реализовать, что это обновление в режиме реального времени. Пожалуйста, помогите мне с кодом. Я должен представить этот проект на уровне колледжа до 17 января. Ниже мой код:
Адаптер слайдера изображения:
public class SliderAdapter extends SliderViewAdapter<SliderAdapter.SliderAdapterVH>{
public List<Banner> bannerList;
public Context context;
private OnItemClicked onClicked;
public SliderAdapter(Context context, List<Banner> bannerList, OnItemClicked onClicked) {
this.bannerList = bannerList;
this.context = context;
this.onClicked = onClicked;
}
@Override
public SliderAdapterVH onCreateViewHolder(ViewGroup parent) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_slider_myshop, parent, false);
return new SliderAdapterVH(inflate);
}
@Override
public void onBindViewHolder(final SliderAdapterVH viewHolder, final int position) {
Glide.with(viewHolder.itemView)
.load(bannerList.get(position).getmSliderImage())
.fitCenter()
.into(viewHolder.imageViewBackground);
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClicked.onItemPressed(position, bannerList.get(position));
}
});
}
@Override
public int getCount() {
return bannerList.size();
}
public int getItemPosition (Object object) {
return POSITION_NONE;
}
public void setOnClick(SliderAdapter.OnItemClicked onClicked) {
this.onClicked = onClicked;
}
public interface OnItemClicked {
void onItemPressed(int position, Banner forwardData);
}
class SliderAdapterVH extends SliderViewAdapter.ViewHolder {
View itemView;
ImageView imageViewBackground;
ImageView imageGifContainer;
public SliderAdapterVH(View itemView) {
super(itemView);
imageViewBackground = itemView.findViewById(R.id.iv_auto_image_slider);
imageGifContainer = itemView.findViewById(R.id.iv_gif_container);
this.itemView = itemView;
}
}
}
Класс баннера:
public class Banner extends UserId implements Serializable {
String mSliderImage;
String mTitle;
public Banner() {
}
public Banner(String mSliderImage, String mTitle) {
this.mSliderImage = mSliderImage;
this.mTitle = mTitle;
}
public String getmSliderImage() {
return mSliderImage;
}
public void setmSliderImage(String mSliderImage)
{ this.mSliderImage = mSliderImage; }
public String getmTitle() {
return mTitle;
}
Домашний фрагмент: (Здесь показан мой слайдер изображения)
public class HomeFragment extends Fragment implements SliderAdapter.OnItemClicked {
private SliderAdapter sliderImageAdapter;
private List<Banner> bannerList;
bannerList = new ArrayList<>();
sliderImageAdapter = new SliderAdapter(getActivity(), bannerList, this);
@Override
public void onItemPressed(int position, forwardData) {
String title = bannerList.get(position).getmTitle();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_container_dashboard, SliderAdapterEventFragment.newInstance(title));
ft.addToBackStack(null);
ft.commit();
Фрагмент слайдера: (В этом фрагменте заголовок, относящийся к изображению, будет отображаться при нажатии пользователем на любое изображение слайдера изображения)
public class SliderAdapterEventFragment extends Fragment {
TextView mTitle;
public static Fragment newInstance(String title) {
Bundle args = new Bundle();
args.putString("title", title);
SliderAdapterEventFragment fragment = new SliderAdapterEventFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.slider_click_listner, container, false);
String title = getArguments().getString("title");
mTitle = (TextView) view.findViewById(R.id.mSliderTitle);
mTitle.setSelected(true);
mTitle.setSingleLine(true);
if (TextUtils.isEmpty(title)) {
mTitle.setText("Not Available");
} else {
mTitle.setText(title);
}
return view;
}