Как реализовать изменение данных в режиме реального времени в android с помощью Google Firebase Firestore? - PullRequest
0 голосов
/ 15 января 2020

Я уже реализовал слайдер изображений с помощью 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;
        }

Fire-store Data Structure image

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