如何将Firebase数据加载到Recyclerview [英] How to load firebase data into recyclerview

查看:56
本文介绍了如何将Firebase数据加载到Recyclerview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻求有关如何将Firebase数据库中存储的数据加载到 recyclerview 的帮助.

I'm seeking help on how to load a data stored in a Firebase Database into a recyclerview.

下面的屏幕截图显示了当我将数据加载到 recyclerview 中时如何构造数据.

The below screenshot indicates how I would like for the data to be structured when loaded into the recyclerview.

我能够使用 addEventListener 从单个路径(例如"Upcoming/Events/03/23")访问数据,但无法动态加载到 recyclerview 中上面的格式.

I am able to access the data from individual paths such as "Upcoming/Events/03/23" using the addEventListener but unable to load dynamically into a recyclerview in the format above.

请参阅下面的代码,我将在下面的代码中加载不同节点下的子级,但是我可以将其加载到 recyclerview

See Code below that I have below to load the children under the different nodes, but i'm able to load it into the recyclerview

private ListView mUserList;
private ArrayList<String> mUpcomingList = new ArrayList<>();

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,mUpcomingList);
mUserList.setAdapter(arrayAdapter);

String CurrentString = date.toString().trim();
StringTokenizer tokens = new StringTokenizer(CurrentString, "/");
String first = tokens.nextToken();
String second = tokens.nextToken();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Upcoming/Events").child(first);
mDatabase.addValueEventListener(new ValueEventListener() {

@Override
Public void onDataChange(DataSnapshot dataSnapshot) {

Log.d(TAG,"Listing children");

for (DataSnapshot child: dataSnapshot.getChildren()) {


mUpcomingList.add(child.getKey());
arrayAdapter.notifyDataSetChanged();
}

我们非常感谢您的帮助.

Your help is appreciated.

推荐答案

使用时,您需要使recyclerview成为adatper并将该适配器绑定到一个recycler视图中.下面的代码用于显示Firebase所有数据,并根据需要进行更改并进行更改.

when you used then you make recyclerview adatper and bind this adapter into a recycler view . used below code for display firebase all the data and change according your need and make changes.

RecyclerView适配器::

RecyclerView Adapter::

public class DisplayAllData extends RecyclerView.Adapter<DisplayAllData.ItemViewHolder>{
    private  List<User> mUserLsit=new ArrayList<>();
    private Context mContext;

    @Override
    public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout,parent,false);
        return new ItemViewHolder(view);
    }

    public DisplayAllData(Context mContext,List<User> mUserLsit) {
        this.mContext=mContext;
        this.mUserLsit = mUserLsit;
    }

    @Override
    public void onBindViewHolder(ItemViewHolder holder, int position) {
        User user=mUserLsit.get(position);
        holder.mTvName.setText(user.name);
        holder.mTvEmail.setText(user.email);
        holder.mTvPwd.setText(user.pwd);
    }

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

    public class ItemViewHolder extends RecyclerView.ViewHolder {
        TextView mTvName,mTvEmail,mTvPwd;
        public ItemViewHolder(View itemView) {
            super(itemView);
            mTvEmail=itemView.findViewById(R.id.rlTvEmail);
            mTvName=itemView.findViewById(R.id.rlTvName);
            mTvPwd=itemView.findViewById(R.id.rlTvPwd);

        }
    }
}

在Adapter中采用简单的布局,并进行三个textview控件的绑定,并将数据绑定到其中.然后进行活动布局并在xml中定义回收者视图.然后使用下面的代码读取Firebase数据库记录并显示recyclerview.

In Adapter take a simple layout and make three textview control and bind data into that. then after take activity layout and define recycler view in xml. then after used below code to read firebase database record and display recyclerview.

public class DisplayActivity extends AppCompatActivity {
    private RecyclerView mRvData;
    private DisplayAllData allDataAdapter;
    private DatabaseReference mDatabase;
    private TextView mTvEmpty;
    private FirebaseDatabase mFirebaseInstance;
    private List<User> mUserList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.display_data);
        initView();
    }

    private void initView() {
        mFirebaseInstance = FirebaseDatabase.getInstance();
        mDatabase = mFirebaseInstance.getReference("usersDb/UserTable");
        mRvData = findViewById(R.id.rvData);
        mTvEmpty = findViewById(R.id.dlTvEmpty);
        mRvData.setLayoutManager(new LinearLayoutManager(this));
        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                mUserList.clear();
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                    User user = dataSnapshot1.getValue(User.class);
                    mUserList.add(user);
                }
                allDataAdapter = new DisplayAllData(DisplayActivity.this, mUserList);
                mRvData.setAdapter(allDataAdapter);
                allDataAdapter.notifyDataSetChanged();
                if (mUserList.isEmpty())
                    mTvEmpty.setVisibility(View.VISIBLE);
                else
                    mTvEmpty.setVisibility(View.GONE);
            }


            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

这篇关于如何将Firebase数据加载到Recyclerview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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