如何在应用程序中存储 FirebaseUi 创建的帖子?
How to store posts created by FirebaseUi in the app?
我有一个 Activity,它从 Firebase 检索数据并创建了一个 post。但如果它从最近的应用程序中删除或停止,则必须重新加载。我想将其永久存储在应用程序中。我该怎么做?
我的Activity:
public class MainActivity extends AppCompatActivity {
private RecyclerView mbloglist;
private DatabaseReference mdatabase;
public static final String TAG = "Homeactivity";
private Context mcontext = MainActivity.this;
private static final int ACTIVITY_NUM = 0;
Dialog mycustomDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: starting");
mdatabase = FirebaseDatabase.getInstance().getReference().child("Global");
mdatabase.keepSynced(true);
mbloglist = (RecyclerView)findViewById(R.id.recycleView_post);
mbloglist.setHasFixedSize(true);
mbloglist.setLayoutManager(new LinearLayoutManager(this));
setupBottomNavigationView();
setupToolbar();
mycustomDialog = new Dialog(this);
}
@Override
protected void onStart() {
super.onStart();
final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar_post);
progressBar.setVisibility(View.VISIBLE);
FirebaseRecyclerAdapter<Blog,BlogViewHolder>firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(
Blog.class,R.layout.layout_post,BlogViewHolder.class,mdatabase
) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
viewHolder.setImage(getApplicationContext(),model.getImage());
viewHolder.setTime(model.getTime());
}
};
mdatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, "onCancelled: event cancelled");
}
});
mbloglist.setAdapter(firebaseRecyclerAdapter);
}
public static class BlogViewHolder extends RecyclerView.ViewHolder {
View mview;
public BlogViewHolder(View itemView) {
super(itemView);
mview = itemView;
}
public void setTitle(String title) {
TextView post_title = (TextView) itemView.findViewById(R.id.post_title);
post_title.setText(title);
}
public void setDesc(String desc) {
TextView post_desc = (TextView) itemView.findViewById(R.id.post_description);
post_desc.setText(desc);
}
public void setImage(Context context,String image) {
PhotoView post_image = (PhotoView) itemView.findViewById(R.id.post_image);
Glide.with(context).asBitmap().load(image).into(post_image);
}
public void setTime(String time) {
TextView post_desc = (TextView) itemView.findViewById(R.id.post_time);
post_desc.setText(time);
}
}
即使没有互联网连接,我能否保存并显示此 post。并在连接可用时重新加载 post。
也使用
DatabaseReference db = FirebaseDatabase.getInstance();
db.setPersistenceEnabled(true);
mDatabase = db.getReference().child("Global");;
累积至 docs -
By enabling persistence, any data that the Firebase Realtime Database client would sync while online persists to disk and is available offline, even when the user or operating system restarts the app. This means your app works as it would online by using the local data stored in the cache.
连同
mdatabase.keepSynced(true);
我有一个 Activity,它从 Firebase 检索数据并创建了一个 post。但如果它从最近的应用程序中删除或停止,则必须重新加载。我想将其永久存储在应用程序中。我该怎么做?
我的Activity:
public class MainActivity extends AppCompatActivity {
private RecyclerView mbloglist;
private DatabaseReference mdatabase;
public static final String TAG = "Homeactivity";
private Context mcontext = MainActivity.this;
private static final int ACTIVITY_NUM = 0;
Dialog mycustomDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: starting");
mdatabase = FirebaseDatabase.getInstance().getReference().child("Global");
mdatabase.keepSynced(true);
mbloglist = (RecyclerView)findViewById(R.id.recycleView_post);
mbloglist.setHasFixedSize(true);
mbloglist.setLayoutManager(new LinearLayoutManager(this));
setupBottomNavigationView();
setupToolbar();
mycustomDialog = new Dialog(this);
}
@Override
protected void onStart() {
super.onStart();
final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar_post);
progressBar.setVisibility(View.VISIBLE);
FirebaseRecyclerAdapter<Blog,BlogViewHolder>firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(
Blog.class,R.layout.layout_post,BlogViewHolder.class,mdatabase
) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
viewHolder.setImage(getApplicationContext(),model.getImage());
viewHolder.setTime(model.getTime());
}
};
mdatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, "onCancelled: event cancelled");
}
});
mbloglist.setAdapter(firebaseRecyclerAdapter);
}
public static class BlogViewHolder extends RecyclerView.ViewHolder {
View mview;
public BlogViewHolder(View itemView) {
super(itemView);
mview = itemView;
}
public void setTitle(String title) {
TextView post_title = (TextView) itemView.findViewById(R.id.post_title);
post_title.setText(title);
}
public void setDesc(String desc) {
TextView post_desc = (TextView) itemView.findViewById(R.id.post_description);
post_desc.setText(desc);
}
public void setImage(Context context,String image) {
PhotoView post_image = (PhotoView) itemView.findViewById(R.id.post_image);
Glide.with(context).asBitmap().load(image).into(post_image);
}
public void setTime(String time) {
TextView post_desc = (TextView) itemView.findViewById(R.id.post_time);
post_desc.setText(time);
}
}
即使没有互联网连接,我能否保存并显示此 post。并在连接可用时重新加载 post。
也使用
DatabaseReference db = FirebaseDatabase.getInstance();
db.setPersistenceEnabled(true);
mDatabase = db.getReference().child("Global");;
累积至 docs -
By enabling persistence, any data that the Firebase Realtime Database client would sync while online persists to disk and is available offline, even when the user or operating system restarts the app. This means your app works as it would online by using the local data stored in the cache.
连同
mdatabase.keepSynced(true);