java - 如何使用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;
}
解决方案
推荐阅读
- python - 如何快速不返回加盐密文,而是返回密文的未加盐版本?
- java - 如何在 java 中使用 jdbc 编写选择查询需要检查 COLUMN 是否为 NULL?
- sql-server - 按名称删除分区 sql server
- ios - 处理多个任务时如何跟踪进度和增加进度视图的计数?
- python - 使用 matplotlib 增加绘图和标题之间的空间
- azure-cognitive-search - Azure 搜索排序,如 localeCompare javascript 功能
- javascript - 如何将图像和数据添加到 Firebase
- c# - 如何将带有滑块的 HH:mm 格式设置为文本框
- xpath - XPath 1.0 代码选择了错误的最大值
- c# - 删除 linq 中的循环导致性能降低