首页 > 解决方案 > 如何使用google firebase firestore在android中实现实时数据修改?

问题描述

我已经在我的主页片段中使用 view-pager 实现了图像滑块。当用户单击图像时,会打开一个新片段并根据图像位置显示该图像的标题。我现在面临的唯一问题是当用户在将显示图像标题的片段上时。并且在 Firebase Firestore 中完成的数据修改不会实时更新。用户必须回到主页片段,然后再次单击图像才能看到这些更改。如何实现实时更新。请帮我写代码。我必须在 1 月 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 数据结构图像

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


推荐阅读