【问题标题】:How do I display latest post on top for blogging app? [duplicate]如何在博客应用程序顶部显示最新帖子? [复制]
【发布时间】:2017-03-28 07:11:13
【问题描述】:

最近,我一直在开发一个博客应用项目,其中我使用 Firebase 保存和检索所有帖子,并且我正在 Android Studio 中开发我的应用。

问题是,每当发布新帖子时,最新的帖子都会排在帖子列​​表的底部;因此,用户必须一直到帖子活动才能看到新帖子。我怎样才能扭转它?我希望最新的帖子出现在顶部。我应该写什么代码?

这是我的代码:

public class AlertsActivity extends AppCompatActivity{

    private Toolbar toolbar;
    private RecyclerView mbloglist;
    private DatabaseReference mDatabase;

    @Override
    protected void onCreate(Bundle SavedInstanceState) {
        super.onCreate(SavedInstanceState);
        setContentView(R.layout.alert);

        toolbar= (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        mDatabase= FirebaseDatabase.getInstance().getReference().child("Blog");
        mDatabase.keepSynced(true);
        mbloglist= (RecyclerView) findViewById(R.id.alert_list);
        mbloglist.setHasFixedSize(true);
        mbloglist.setLayoutManager(new LinearLayoutManager(this));

    }

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

        FirebaseRecyclerAdapter<Blog,BlogViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(
                Blog.class,
                R.layout.blog_row,
                BlogViewHolder.class,mDatabase

        ){
            @Override
            protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
                viewHolder.setTitle(model.getTitle());
                viewHolder.setDesp(model.getDesp());

            }
        };

        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.blog_title);
            post_title.setText(title);

        }

        public void setDesp(String desp){
            TextView post_desp= (TextView) mview.findViewById(R.id.blog_desp);
            post_desp.setText(desp);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_alerts,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(item.getItemId()==R.id.action_add){
            Intent intent=new Intent(AlertsActivity.this,PostActivity.class);

            startActivity(intent);

        }
        return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

  • 你应该在检索帖子时放置一个标志。

标签: android firebase firebase-realtime-database


【解决方案1】:

请为每个帖子添加一个字段,时间戳。从 Firebase 数据库中获取所有帖子时,请使用 orderByChild("timestamp") 按日期对帖子进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多