繁体   English   中英

android recylerview 不显示 firebase 数据

[英]android recylerview not displaying firebase data

我正在尝试从另一个 firebase 项目中检索数据,但数据未显示在 recylerview 中。 我没有收到任何错误,只是一个空白的卡片视图。 有人可以帮我解决我遇到的这个问题。 我的代码如下。

// This my code

public class ExampleFragment extends Fragment {


    LinearLayout linearLayoutWithoutItems,linearLayoutNoConnection;
    View rootView;

    private RecyclerView recyclerView;
    private Adapter1 aAdapter;
    ImageButton menu_click;
    ImageView imageView;
    //Variables
    NavigationView navigationView;
    Toolbar toolbar;
    Menu menu;
    LinearLayout linearLayout;
    TextView textView;
    BottomNavigationView bottomNavigationView;
    private DatabaseReference databaseReference;
    private ArrayList<Model_Information> myUploads;
    FirebaseStorage firebaseStorage;
    StorageReference storageReference;

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

        rootView =inflater.inflate(R.layout.fragment_example, container, false);



        init();
        return rootView;
    }
    public void init()
    {

        recyclerView = rootView.findViewById(R.id.WithItems_recyclerview);
        linearLayoutWithoutItems = rootView.findViewById(R.id.WithoutItems);
        linearLayoutNoConnection = rootView.findViewById(R.id.no_connection);

        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getContext(),1);

        recyclerView.setLayoutManager(layoutManager);
        myUploads = new ArrayList<Model_Information>();
        aAdapter = new Adapter1(getContext(), myUploads);
        recyclerView.setAdapter(aAdapter);
        aAdapter.notifyDataSetChanged();

      
        databaseReference = FirebaseDatabase.getInstance("https://liou-43081.firebaseio.com").getReference().child("Post");

      


        if (InternetConnection.checkConnection(getContext())) {
            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {




                    if(dataSnapshot.exists()){
                        //progressBar.setVisibility(View.GONE);



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









                                Model_Information upload=postsnapshot.getValue(Model_Information.class);
                                //myUploads.clear();

                                myUploads.add(upload);
                                aAdapter = new Adapter1(getContext(), myUploads);
                                recyclerView.setAdapter(aAdapter);
                                aAdapter.notifyDataSetChanged();
                                recyclerView.invalidate();







                            }

                            linearLayoutWithoutItems.setVisibility(View.GONE);
                            recyclerView.setVisibility(View.VISIBLE);








                            aAdapter.notifyDataSetChanged();

                    }else{
                        linearLayoutWithoutItems.setVisibility(View.VISIBLE);
                        recyclerView.setVisibility(View.GONE);




                    }










                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_LONG).show();

                }
            });

        } else {

            linearLayoutNoConnection.setVisibility(View.VISIBLE);
            linearLayoutWithoutItems.setVisibility(View.GONE);
            recyclerView.setVisibility(View.GONE);


        }



  //Adapter1.class

  public class Adapter1 extends  RecyclerView.Adapter<Adapter1.ImageViewHolder>{

    private Context mContext;
    private ArrayList<Model_Information> users;
    DatabaseReference databaseReference;

    public Adapter1(Context context, ArrayList<Model_Information> uploads){
        mContext = context;
        users = uploads;

    }


    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View V = LayoutInflater.from(mContext).inflate(R.layout.cardview1, parent, false);
        return new ImageViewHolder(V);


    }

    @Override
    public void onBindViewHolder(@NonNull final ImageViewHolder holder, final int position) {
        //String uploadCurrent=users.get(position).getmImageUrl();

      

        Glide.with(mContext).load(users.get(position).getmImageUrl()).thumbnail(0.05f).transition(DrawableTransitionOptions.withCrossFade()).fitCenter().centerInside().into(holder.imageView);



        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(mContext,users.get(position).getCategory(), Toast.LENGTH_LONG).show();
                Long l= Long.valueOf(1);


                databaseReference = FirebaseDatabase.getInstance("https://louie-43081.firebaseio.com").getReference("Clicks_and_Views").child(users.get(position).id);
                databaseReference.child("views").setValue(ServerValue.increment(l));
/*

                Intent intent=new Intent(mContext,ViewActivity.class);
                intent.putExtra("website",users.get(position).getWebsiteurl());
                intent.putExtra("action",users.get(position).getAction());
                intent.putExtra("image",users.get(position).getmImageUrl());
                intent.putExtra("id",users.get(position).id);
                mContext.startActivity(intent);


 */








            }
        });






    }

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

    }

    public class ImageViewHolder extends RecyclerView.ViewHolder{
        public ImageView imageView;
      

        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);

            imageView=itemView.findViewById(R.id.image);
         


        }
    }

您不应该两次初始化适配器。 您的代码块应如下所示,

for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
     Model_Information upload=postsnapshot.getValue(Model_Information.class);
   

     myUploads.add(upload);
     aAdapter.notifyDataSetChanged();
     recyclerView.invalidate();

     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM