片段中的Android FirebaseRecyclerAdapter [英] Android FirebaseRecyclerAdapter in Fragment

查看:241
本文介绍了片段中的Android FirebaseRecyclerAdapter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将Android Studio提供的类用于选项卡式活动,该活动将ActionBar选项卡与ViewPager一起使用.在此活动中,我正在尝试初始化RecyclerView&CardView包含Firebase数据库中的数据.

I'm using the Android Studio provided class for a tabbed activity that uses ActionBar Tabs with ViewPager. Inside this activity, I'm trying to initialize a RecyclerView & CardView with data from a Firebase database.

问题:RecyclerView为空,如下所示.

Problem: RecyclerView is empty as shown below.

空白屏幕,但滚动正常.

empty screen but scroll works fine.

这是我的代码

public class Produce extends Fragment {

    private DatabaseReference mDatabase;
    private FirebaseRecyclerAdapter<ProduceSetting, ProduceViewHolder> mFirebaseAdapter;
    private RecyclerView mProduceList = null;
    private View rootView;

    private Context c;
    private LinearLayoutManager manager;

    public Produce() {}


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.fragment_produce, container, false);
        c = getContext();
        mProduceList = (RecyclerView) rootView.findViewById(R.id.produce_recycler_view);
        manager = new LinearLayoutManager(c);
        mProduceList.setHasFixedSize(true);

        mDatabase = FirebaseDatabase.getInstance().getReference().child("Produce");

        mFirebaseAdapter = new FirebaseRecyclerAdapter<ProduceSetting, ProduceViewHolder>(

                ProduceSetting.class, R.layout.card_item_produce, ProduceViewHolder.class, mDatabase

        ) {
            @Override
            protected void populateViewHolder(ProduceViewHolder viewHolder, ProduceSetting model, int position) {
                viewHolder.setName(model.getGameName());
                viewHolder.setType(model.getGameType());
                viewHolder.setImage(getActivity().getApplicationContext(), model.getImage());
            }
        };


        mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
            @Override
            public void onItemRangeInserted(int positionStart, int itemCount) {
                super.onItemRangeInserted(positionStart, itemCount);
                int friendlyMessageCount = mFirebaseAdapter.getItemCount();
                int lastVisiblePosition =
                        manager.findLastCompletelyVisibleItemPosition();
                // If the recycler view is initially being loaded or the
                // user is at the bottom of the list, scroll to the bottom
                // of the list to show the newly added message.
                if (lastVisiblePosition == -1 ||
                        (positionStart >= (friendlyMessageCount - 1) &&
                                lastVisiblePosition == (positionStart - 1))) {
                    mProduceList.scrollToPosition(positionStart);
                }
            }
        });

        mProduceList.setLayoutManager(manager);
        mProduceList.setAdapter(mFirebaseAdapter);



        return rootView;
    }



    public static class ProduceViewHolder extends RecyclerView.ViewHolder {

        View mView;
        public ProduceViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }
        public void setName(String name) {
            TextView post_name = (TextView) mView.findViewById(R.id.post_name);
            post_name.setText(name);
        }
        public void setType(String type) {
            TextView post_type = (TextView) mView.findViewById(R.id.post_type);
            post_type.setText(type);
        }
        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);
        }
    }
}

这是我的吸气器和吸气器

and here is my getter and setter

public class ProduceSetting {

    private String GameName;
    private String GameType;
    private String image;

    public ProduceSetting(){}

    public ProduceSetting(String gameName, String gameType, String image) {
        GameName = gameName;
        GameType = gameType;
        this.image = image;
    }

    public String getGameName() {
        return GameName;
    }

    public void setGameName(String gameName) {
        GameName = gameName;
    }

    public String getGameType() {
        return GameType;
    }

    public void setGameType(String gameType) {
        GameType = gameType;
    }

    public String getImage() {
        return image;
    }

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

}

请帮助我.

推荐答案

我错了.

mDatabase = FirebaseDatabase.getInstance().getReference().child("Produce");

mDatabase = FirebaseDatabase.getInstance().getReference().child("Produce");

mDatabase = FirebaseDatabase.getInstance().getReference().child("Product");

mDatabase = FirebaseDatabase.getInstance().getReference().child("Product");

这篇关于片段中的Android FirebaseRecyclerAdapter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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