如何在Firebase Android中查询SQL IN子句 [英] How to perfom query SQL IN clause in Firebase Android

查看:111
本文介绍了如何在Firebase Android中查询SQL IN子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在Firebase Android中查询SQL IN子句?我想在Firebase Recycler适配器中使用它来根据某些条件仅检索一些子项。类似于以下声明:

How do I query SQL IN clause in Firebase Android? I want to use it in a Firebase Recycler adapter to retrieve only some children based on some condition. Something like the following statement:

SQL----> select * from posts where city in(10 cities comes here)

我需要Firebase查询才能使用在Firebase Recycler适配器中。

I need a Firebase query to use that in the Firebase Recycler adapter.

推荐答案

我找到了解决方案:我们无法使用 FirebaseRecyclerAdapter 。相反,我们必须创建扩展 RecyclerView.ViewHolder 的自定义适配器。

I found the solution: we cannot use FirebaseRecyclerAdapter. Instead we have to create custom adapter that extends RecyclerView.ViewHolder.

为了将值传递给此适配器,首先我们必须使用 addValueEventListener 检索数据,然后我们必须将值传递给我们的适配器。

For passing values to this adapter, first we have to retrieve data using addValueEventListener and then we have to pass values to our adapter.

这是我的代码。 ..

This is my code...

final ArrayList<Timeline> timelines = new ArrayList<>();

    mDatabaseTimeline.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            final Timeline timeline = dataSnapshot.getValue(Timeline.class);

            if(timeline != null){

                mDatabaseFriends.child(mAuth.getCurrentUser().getUid()).child("active").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        if (mAuth.getCurrentUser().getUid().equals(timeline.getUid()) || dataSnapshot.hasChild(timeline.getUid())) {

                            timelines.add(timeline);
                            mTimelineRecycler.setAdapter(new RecyclerAdapter(TimelineFragment.this.getContext(), timelines));

                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

adapter ----->

adapter----->

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    Context context;
    ArrayList<Timeline> timeline;


    public RecyclerAdapter(Context context, ArrayList<Timeline> timeline) {
        this.context = context;
        this.timeline = timeline;



    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(context);
        View row = inflater.inflate(R.layout.timeline_row, parent, false);
        TimelineViewHolder holder = new TimelineViewHolder(row);
        return holder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {


        final String post_key = timeline.get(position).getPostkey();

        ((TimelineViewHolder) holder).setUsername(timeline.get(position).getUsername());


 }

    @Override
    public int getItemCount() {
        return timeline.size();
    }

    public class TimelineViewHolder extends RecyclerView.ViewHolder {
        public TimelineViewHolder(View itemView) {
            super(itemView);

            view = itemView;
        }

        public View getView() {
            return view;
        }    

        public void setUsername(String username) {
            TextView usernameTxtView = (TextView) view.findViewById(R.id.timeline_username);
            usernameTxtView.setText(username);
        }

    }
}

这篇关于如何在Firebase Android中查询SQL IN子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆