Android 以人类可读的形式在FireBaseRecyclerView适配器中填充日期和时间

Android 以人类可读的形式在FireBaseRecyclerView适配器中填充日期和时间,android,datetime,firebase,firebase-realtime-database,Android,Datetime,Firebase,Firebase Realtime Database,我正在开发一个博客应用程序,我在其中创建了card_视图,其中显示用户名、个人资料图片、发布时间和其他详细信息。到目前为止,除了时间和日期之外,一切都很好。现在这是一件需要花费大量时间进行研究的事情,但问题是我的工作没有得到解决 1。按时间和日期工作到现在 我所做的是在时间戳中保存了用户发布时间 现在,为了实现我的目标,即以人类可读的形式检索post_时间,我做了大量研究,研究如何将数据从时间戳格式更改为非时间和年、小时格式 我的post\u时间在我的POJO中很长,并已成功存储在我的数据库

我正在开发一个博客应用程序,我在其中创建了card_视图,其中显示用户名、个人资料图片、发布时间和其他详细信息。到目前为止,除了时间和日期之外,一切都很好。现在这是一件需要花费大量时间进行研究的事情,但问题是我的工作没有得到解决

1。按时间和日期工作到现在

  • 我所做的是在时间戳中保存了用户发布时间
  • 现在,为了实现我的目标,即以人类可读的形式检索post_时间,我做了大量研究,研究如何将数据从时间戳格式更改为非时间和年、小时格式
我的post\u时间在我的POJO中很长,并已成功存储在我的数据库中

在我的博客片段中,我正在检索我的详细信息

2。Blog.java

public void setPost_time(Long post_time){
            TextView time = (TextView) mView.findViewById(R.id.post_time);
            DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
            Date date = null;
            try {
                date = dateFormat.parse(post_time.toString());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            time.setText(dateFormat.format(date));
        }
public class NewsBlog {

String image;
String desc;
String title;
String username;
Long post_time;
String userpic;


public NewsBlog(){

}

public NewsBlog(String image, String desc, String title, String username,
                String userpic, Long post_time) {
    this.image = image;
    this.desc = desc;
    this.title = title;
    this.post_time = post_time;

    this.username = username;
    this.userpic = userpic;

}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public Long getPost_time() {
    return post_time;
}

public void setPost_time(Long post_time) {
    this.post_time = post_time;
}

public String getUserpic() {
    return userpic;
}

public void setUserpic(String userpic) {
    this.userpic = userpic;
}}
public class Blog extends Fragment {

private RecyclerView mBlogList;

private DatabaseReference mDatabse,mChildRef;

private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

private DatabaseReference mDatabaseUsers,mChildUsers;

public Blog() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_blog, container, false);

    mDatabse = FirebaseDatabase.getInstance().getReference();
    mChildRef = mDatabse.child("Blog");
    mChildRef.keepSynced(true);

    mDatabaseUsers = FirebaseDatabase.getInstance().getReference();
    mChildUsers = mDatabaseUsers.child("Users");
    mChildUsers.keepSynced(true);

    mBlogList = (RecyclerView) view.findViewById(R.id.blog_list);

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);

    mBlogList.setHasFixedSize(true);
    mBlogList.setLayoutManager(linearLayoutManager);

    return view;
}

@Override
public void onStart() {
    super.onStart();

    FirebaseRecyclerAdapter<NewsBlog, BlogViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<NewsBlog, BlogViewHolder>(
                    NewsBlog.class,
                    R.layout.blog_row,
                    BlogViewHolder.class,
                    mChildRef) {
                @Override
                protected void populateViewHolder(BlogViewHolder viewHolder, NewsBlog model, int position) {

                    viewHolder.setTitle(model.getTitle());
                    viewHolder.setImage(getContext(),model.getImage());
                    viewHolder.setDesc(model.getDesc());
                    viewHolder.setUsername(model.getUsername());
                    viewHolder.setPost_time(model.getPost_time());
                    viewHolder.setUserpic(getContext(),model.getUserpic());
                }
            };

    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) mView.findViewById(R.id.post_title);
        post_title.setText(title);
    }

    public void setImage(Context ctx, String image){
        ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
        Picasso.with(ctx).load(image).into(post_image);
    }

    public void setDesc(String desc){
        TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
        post_desc.setText(desc);
    }

    public void setUsername(String username){
        TextView mUsername = (TextView) mView.findViewById(R.id.post_username);
        mUsername.setText(username);
    }

    public void setPost_time(Long post_time){
        TextView time = (TextView) mView.findViewById(R.id.post_time);
        DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        Date date = null;
        try {
            date = dateFormat.parse(post_time.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        time.setText(dateFormat.format(date));
    }

    public void setUserpic(Context ctx, String userpic){
        ImageView userImage = (ImageView) mView.findViewById(R.id.post_userpic);
        Picasso.with(ctx).load(userpic).into(userImage);
    }
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.blog_menu, menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if(id == R.id.blog_items1){
        //for checking whether the user has logged in or not
        mAuth = FirebaseAuth.getInstance();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if(firebaseAuth.getCurrentUser() == null){
                    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Login");
                    Login login = new Login();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, login);
                    fragmentTransaction.commit();

                } else {
                    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("AddBlog");
                    PostActivity postActivity = new PostActivity();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, postActivity);
                    fragmentTransaction.commit();
                }
            }
        };

        mAuth.addAuthStateListener(mAuthListener);

        mAuth.removeAuthStateListener(mAuthListener);

    }else if(id == R.id.logout) {
        //logout action
        mAuth = FirebaseAuth.getInstance();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if(firebaseAuth.getCurrentUser() != null){
                    mAuth.signOut();
                    Toast.makeText(getContext()," Successfully Logged Out!",Toast.LENGTH_SHORT)
                            .show();
                    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Login");
                    Login login = new Login();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, login);
                    fragmentTransaction.commit();

                }else{
                    Toast.makeText(getContext(),"Log in first!",Toast.LENGTH_SHORT)
                            .show();
                }
            }
        };
        mAuth.addAuthStateListener(mAuthListener);


        mAuth.removeAuthStateListener(mAuthListener);
    }

    return super.onOptionsItemSelected(item);
}}
我在跟踪了大量有关Stackoverflow的代码后完成了上述代码,但从未得到解决方案

我的解决方案搜索:

为了将时间戳格式转换为人类可读的格式,我又做了一件事,如下所示:

当我在Blog.java中实现上述代码时,我在logcat中得到了错误

3。LogCat

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.aadarshkumarsingh.project1, PID: 10460
              com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long
                  at com.google.android.gms.internal.zzbqi.zzaA(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzc(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzbqi$zza.zze(Unknown Source)
                  at com.google.android.gms.internal.zzbqi$zza.zzaG(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zze(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
                  at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.parseSnapshot(FirebaseRecyclerAdapter.java:151)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:140)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:183)
                  at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5825)
                  at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5858)
                  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5094)
                  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4970)
                  at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
                  at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
                  at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
                  at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
                  at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315)
                  at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3124)
                  at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1549)
                  at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:305)
                  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
                  at android.view.Choreographer.doCallbacks(Choreographer.java:683)
                  at android.view.Choreographer.doFrame(Choreographer.java:616)
                  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
                  at android.os.Handler.handleCallback(Handler.java:751)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
mDatabaseUsers.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        //now getting the title,desc and image inside the specified field in our
                        //databse
                        newPost.child("title").setValue(title_val);
                        newPost.child("desc").setValue(title_desc);
                        newPost.child("image").setValue(downloadUrl.toString());
                        //for future purpose if we want the app to have a feature of
                        //visiting the user's profile
                        newPost.child("uid").setValue(mCurrentUser.getUid());
                        newPost.child("post_time").setValue(ServerValue.TIMESTAMP);
                        //returns the data from the users database object
                        newPost.child("username").setValue(dataSnapshot.child("name").getValue());
                        newPost.child("userpic").setValue(dataSnapshot.child("image").getValue());

                    }
W/DynamicModule:未找到com.google.firebase.auth的本地模块描述符类

我的数据库如下所示:

数据库快照

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.aadarshkumarsingh.project1, PID: 10460
              com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long
                  at com.google.android.gms.internal.zzbqi.zzaA(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzc(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzbqi$zza.zze(Unknown Source)
                  at com.google.android.gms.internal.zzbqi$zza.zzaG(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zze(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
                  at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
                  at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.parseSnapshot(FirebaseRecyclerAdapter.java:151)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:140)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:183)
                  at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5825)
                  at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5858)
                  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5094)
                  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4970)
                  at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
                  at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
                  at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
                  at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
                  at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315)
                  at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3124)
                  at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1549)
                  at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:305)
                  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
                  at android.view.Choreographer.doCallbacks(Choreographer.java:683)
                  at android.view.Choreographer.doFrame(Choreographer.java:616)
                  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
                  at android.os.Handler.handleCallback(Handler.java:751)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
mDatabaseUsers.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        //now getting the title,desc and image inside the specified field in our
                        //databse
                        newPost.child("title").setValue(title_val);
                        newPost.child("desc").setValue(title_desc);
                        newPost.child("image").setValue(downloadUrl.toString());
                        //for future purpose if we want the app to have a feature of
                        //visiting the user's profile
                        newPost.child("uid").setValue(mCurrentUser.getUid());
                        newPost.child("post_time").setValue(ServerValue.TIMESTAMP);
                        //returns the data from the users database object
                        newPost.child("username").setValue(dataSnapshot.child("name").getValue());
                        newPost.child("userpic").setValue(dataSnapshot.child("image").getValue());

                    }
请帮我解决这个问题,因为这对我来说非常重要,会让我的应用程序看起来更人性化

更新

@Override
public void onStart() {
    super.onStart();

    FirebaseRecyclerAdapter<NewsBlog, BlogViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<NewsBlog, BlogViewHolder>(
                    NewsBlog.class,
                    R.layout.blog_row,
                    BlogViewHolder.class,
                    mChildRef) {
                @Override
                protected void populateViewHolder(BlogViewHolder viewHolder, NewsBlog model, int position) {

                    viewHolder.setTitle(model.getTitle());
                    viewHolder.setImage(getContext(),model.getImage());
                    viewHolder.setDesc(model.getDesc());
                    viewHolder.setUsername(model.getUsername());
                    viewHolder.setPost_time(model.getPost_time());
                    viewHolder.setUserpic(getContext(),model.getUserpic());
                }
            };

    mBlogList.setAdapter(firebaseRecyclerAdapter);
}
Blog.java

public void setPost_time(Long post_time){
            TextView time = (TextView) mView.findViewById(R.id.post_time);
            DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
            Date date = null;
            try {
                date = dateFormat.parse(post_time.toString());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            time.setText(dateFormat.format(date));
        }
public class NewsBlog {

String image;
String desc;
String title;
String username;
Long post_time;
String userpic;


public NewsBlog(){

}

public NewsBlog(String image, String desc, String title, String username,
                String userpic, Long post_time) {
    this.image = image;
    this.desc = desc;
    this.title = title;
    this.post_time = post_time;

    this.username = username;
    this.userpic = userpic;

}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public Long getPost_time() {
    return post_time;
}

public void setPost_time(Long post_time) {
    this.post_time = post_time;
}

public String getUserpic() {
    return userpic;
}

public void setUserpic(String userpic) {
    this.userpic = userpic;
}}
public class Blog extends Fragment {

private RecyclerView mBlogList;

private DatabaseReference mDatabse,mChildRef;

private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

private DatabaseReference mDatabaseUsers,mChildUsers;

public Blog() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_blog, container, false);

    mDatabse = FirebaseDatabase.getInstance().getReference();
    mChildRef = mDatabse.child("Blog");
    mChildRef.keepSynced(true);

    mDatabaseUsers = FirebaseDatabase.getInstance().getReference();
    mChildUsers = mDatabaseUsers.child("Users");
    mChildUsers.keepSynced(true);

    mBlogList = (RecyclerView) view.findViewById(R.id.blog_list);

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);

    mBlogList.setHasFixedSize(true);
    mBlogList.setLayoutManager(linearLayoutManager);

    return view;
}

@Override
public void onStart() {
    super.onStart();

    FirebaseRecyclerAdapter<NewsBlog, BlogViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<NewsBlog, BlogViewHolder>(
                    NewsBlog.class,
                    R.layout.blog_row,
                    BlogViewHolder.class,
                    mChildRef) {
                @Override
                protected void populateViewHolder(BlogViewHolder viewHolder, NewsBlog model, int position) {

                    viewHolder.setTitle(model.getTitle());
                    viewHolder.setImage(getContext(),model.getImage());
                    viewHolder.setDesc(model.getDesc());
                    viewHolder.setUsername(model.getUsername());
                    viewHolder.setPost_time(model.getPost_time());
                    viewHolder.setUserpic(getContext(),model.getUserpic());
                }
            };

    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) mView.findViewById(R.id.post_title);
        post_title.setText(title);
    }

    public void setImage(Context ctx, String image){
        ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
        Picasso.with(ctx).load(image).into(post_image);
    }

    public void setDesc(String desc){
        TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
        post_desc.setText(desc);
    }

    public void setUsername(String username){
        TextView mUsername = (TextView) mView.findViewById(R.id.post_username);
        mUsername.setText(username);
    }

    public void setPost_time(Long post_time){
        TextView time = (TextView) mView.findViewById(R.id.post_time);
        DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        Date date = null;
        try {
            date = dateFormat.parse(post_time.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        time.setText(dateFormat.format(date));
    }

    public void setUserpic(Context ctx, String userpic){
        ImageView userImage = (ImageView) mView.findViewById(R.id.post_userpic);
        Picasso.with(ctx).load(userpic).into(userImage);
    }
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.blog_menu, menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if(id == R.id.blog_items1){
        //for checking whether the user has logged in or not
        mAuth = FirebaseAuth.getInstance();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if(firebaseAuth.getCurrentUser() == null){
                    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Login");
                    Login login = new Login();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, login);
                    fragmentTransaction.commit();

                } else {
                    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("AddBlog");
                    PostActivity postActivity = new PostActivity();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, postActivity);
                    fragmentTransaction.commit();
                }
            }
        };

        mAuth.addAuthStateListener(mAuthListener);

        mAuth.removeAuthStateListener(mAuthListener);

    }else if(id == R.id.logout) {
        //logout action
        mAuth = FirebaseAuth.getInstance();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if(firebaseAuth.getCurrentUser() != null){
                    mAuth.signOut();
                    Toast.makeText(getContext()," Successfully Logged Out!",Toast.LENGTH_SHORT)
                            .show();
                    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Login");
                    Login login = new Login();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, login);
                    fragmentTransaction.commit();

                }else{
                    Toast.makeText(getContext(),"Log in first!",Toast.LENGTH_SHORT)
                            .show();
                }
            }
        };
        mAuth.addAuthStateListener(mAuthListener);


        mAuth.removeAuthStateListener(mAuthListener);
    }

    return super.onOptionsItemSelected(item);
}}
public类Blog扩展了片段{
私人回收站查看mBlogList;
私有数据库参考mDatabse,mChildRef;
私人消防队;
私有FirebaseAuth.AuthStateListener mAuthListener;
私有数据库参考mDatabaseUsers,mChildUsers;
公共博客(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u blog,container,false);
mDatabse=FirebaseDatabase.getInstance().getReference();
mChildRef=mDatabse.child(“博客”);
mChildRef.保持同步(正确);
mDatabaseUsers=FirebaseDatabase.getInstance().getReference();
mChildUsers=mDatabaseUsers.child(“用户”);
mChildUsers.保持同步(真);
mBlogList=(RecyclerView)view.findviewbyd(R.id.blog_list);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
mBlogList.setHasFixedSize(true);
mBlogList.setLayoutManager(linearLayoutManager);
返回视图;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=
新型FirebaseRecyclerAdapter(
NewsBlog.class,
R.layout.blog_行,
BlogViewHolder.class,
麦克希尔德雷夫){
@凌驾
受保护的void populateViewHolder(BlogViewHolder、NewsBlog模型、int位置){
setTitle(model.getTitle());
setImage(getContext(),model.getImage());
setDesc(model.getDesc());
viewHolder.setUsername(model.getUsername());
viewHolder.setPost_time(model.getPost_time());
setUserpic(getContext(),model.getUserpic());
}
};
mBlogList.setAdapter(firebaseRecyclerAdapter);
}
公共静态类BlogViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共BlogViewHolder(查看项目视图){
超级(项目视图);
mView=项目视图;
}
公共无效集合标题(字符串标题){
TextView post_title=(TextView)mView.findViewById(R.id.post_title);
post_title.setText(title);
}
公共void setImage(上下文ctx,字符串图像){
ImageView post_image=(ImageView)mView.findviewbyd(R.id.post_image);
毕加索.with(ctx).load(image).into(post_image);
}
公共void setDesc(字符串desc){
TextView post_desc=(TextView)mView.findViewById(R.id.post_desc);
后描述设置文本(描述);
}
public void setUsername(字符串用户名){
TextView mUsername=(TextView)mView.findViewById(R.id.post_用户名);
mUsername.setText(用户名);
}
公共无效设置post_时间(长post_时间){
TextView时间=(TextView)mView.findviewbyd(R.id.post_时间);
DateFormat DateFormat=新的SimpleDateFormat(“dd-MM-yyyy-HH:MM:ss”);
日期=空;
试一试{
date=dateFormat.parse(post_time.toString());
}捕获(解析异常){
e、 printStackTrace();
}
time.setText(dateFormat.format(date));
}
public void setUserpic(上下文ctx,字符串userpic){
ImageView userImage=(ImageView)mView.findviewbyd(R.id.post_userpic);
毕加索.with(ctx).load(userpic).into(userImage);
}
}
@凌驾
ActivityCreated上的公共无效(@Nullable Bundle savedinStateCState){
super.onActivityCreated(savedInstanceState);
设置选项菜单(真);
}
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
充气器。充气(右菜单。右菜单,菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.blog_items1){
//用于检查用户是否已登录
mAuth=FirebaseAuth.getInstance();
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
公共空间