java如何向实时数据库添加值事件侦听器
我将一些图像导入firebase存储,并将图像链接添加到名为images的文件夹下的实时数据库。我希望我的应用程序在我更改实时数据库中的链接图像后自动将图像同步到用户。我不太确定如何添加值事件侦听器和创建数据库引用。 目前,我正在使用直接链接检索图像,您可以在下面的代码中看到。然而,这不是很好,因为我必须更改代码中的链接以更新新内容。有人能帮忙解决这个问题吗?请分享一些代码,让我了解如何实现这一点
图像活动。爪哇
package com.example.安卓.zamcatalog;
import 安卓.net.Uri;
import 安卓.support.annotation.NonNull;
import 安卓.support.v4.view.ViewPager;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.util.DisplayMetrics;
import 安卓.widget.ImageView;
import com.google.安卓.gms.tasks.OnFailureListener;
import com.google.安卓.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
public class gameActivity extends AppCompatActivity {
ViewPager viewPager;
ViewPagerAdapter adapter;
private String[] images = {
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame1.jpg?alt=media&token=b3917686-090f-43fb-852e-0365ac67dd6e",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame2.jpg?alt=media&token=25e4eb76-5361-42a6-9bfd-6e3b1153611f",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame3.jpg?alt=media&token=a5d4c8b9-9ecb-4ea1-a095-557955db1d19",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame4.jpg?alt=media&token=b4598019-13b3-4600-aa49-86fd0a8c5c64",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame5.jpg?alt=media&token=a4991bfe-d3b4-4f1c-be65-55ddfd1de7ba",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame6.jpg?alt=media&token=e8b43bb6-c967-495f-b5e2-336f082225b6",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame7.jpg?alt=media&token=0f135b82-1a05-4585-a511-bbab35a5613a",
"https://firebasestorage.googleapis.com/v0/b/zamcatalog.appspot.com/o/Game%2Fgame8.jpg?alt=media&token=ab8a9fcf-db2d-4c9c-afd8-969a4db22a8c"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
viewPager = (ViewPager)findViewById(R.id.viewpager);
adapter = new ViewPagerAdapter(gameActivity.this,images);
viewPager.setAdapter(adapter);
}
}
查看页面雷达。爪哇
package com.example.安卓.zamcatalog;
import 安卓.app.Activity;
import 安卓.content.Context;
import 安卓.support.annotation.NonNull;
import 安卓.support.v4.view.PagerAdapter;
import 安卓.support.v4.view.ViewPager;
import 安卓.util.DisplayMetrics;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.ImageView;
import com.bumptech.glide.Glide;
import com.firebase.ui.storage.images.FirebaseImageLoader;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.storage.FirebaseStorage;
public class ViewPagerAdapter extends PagerAdapter {
Activity activity;
String[] images;
LayoutInflater inflater;
public ViewPagerAdapter(Activity activity, String[] images) {
this.activity = activity;
this.images = images;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
inflater = (LayoutInflater) activity.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemview = inflater.inflate(R.layout.viewpager_item, container, false);
ImageView image;
image = (ImageView) itemview.findViewById(R.id.imageView);
DisplayMetrics dis = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dis);
int height = dis.heightPixels;
int width = dis.widthPixels;
image.setMinimumHeight(height);
image.setMinimumWidth(width);
try {
Glide.with(activity.getApplicationContext())
.load(images[position])
.into(image);
} catch (Exception ex) {
}
container.addView(itemview);
return itemview;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
}
# 1 楼答案
您应该将这些图像存储在数据库中,首先获取它们的链接,然后使用Glide或Picasso检索这些图像
此代码段将图像保存到存储器中并获取其下载URL:
然后使用addValueEventListener
我们存储图像URL是为了用毕加索或Glide显示图像,这是用Firebase加载图像的最简单方法