无法显示来自firebase数据库的所有图像,我想将所有图像从一个id显示到网格视图中

时间:2018-06-15 10:25:25

标签: android firebase firebase-realtime-database

This is my firebase storage image and I want to display all images from url into gridview by taking the current user id

这是我的主要活动onstart()导致适配器类。 我想在当前用户ID下显示所有图像,如网格视图。

如何在图片上方的firebase中显示网格视图中的所有用户图片帖子。

@Override
protected void onStart() {
    super.onStart();
    FirebaseUser currentUser = mAuth.getCurrentUser();
    uploads = new ArrayList<Blog>();
    if (currentUser != null && !currentUser.isAnonymous()) {
        mUserf.child("online").setValue("true");
        mProgressbar.setMessage("Welcome.....");
        mProgressbar.show();
        mProgressbar.dismiss();
        ConnectivityManager check = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);

        NetworkInfo info = check.getActiveNetworkInfo();            //for checking whether app is connected to a network or not..
        if(info!=null && info.isConnected()) {
            //Toast.makeText(MainActivity.this, "network available", Toast.LENGTH_SHORT).show();
            firebaseAuth.addAuthStateListener(authStateListener);
            mProgressbar.setMessage("Fetching Blogs.....");
            mProgressbar.show();
            mProgressbar.dismiss();
            list = new ArrayList<>();
            adapter = new MyCustomAdapter(this,list,firebaseAuth,mdatabaseReference,likesdatabaseReference);
            recyclerView = (RecyclerView) findViewById(R.id.blog_list);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));
            recyclerView.setAdapter(adapter);
            alpha = FirebaseDatabase.getInstance().getReference().child("Blog").child(mAuth.getCurrentUser().getUid());


            mchildEventListener = new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    mProgressbar.dismiss();


                    String j = dataSnapshot.getKey();
                    Log.v("GETKEYZZZ", j);
                    Blog friendlyMessage = dataSnapshot.getValue(Blog.class);
                    friendlyMessage.setPostkey(j);
                    list.add(friendlyMessage);
                    adapter.notifyDataSetChanged();

                }

                public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
                public void onChildRemoved(DataSnapshot dataSnapshot){}
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
                public void onCancelled(DatabaseError databaseError) {}
            };
            mquery.addChildEventListener(mchildEventListener);

        } else {
            //Toast.makeText(MainActivity.this, "No network available", Toast.LENGTH_SHORT).show();

            Toast.makeText(getApplicationContext(),"Please Check Your Internet Connection", Toast.LENGTH_LONG).show();
        }
       // mDatabseUsers.child("online").setValue("true");
    } else {
        Intent user1 = new Intent(MainActivity.this, LoginActivity.class);
        startActivity(user1);
    }
}

这是我的适配器类

public class MyCustomAdapter extends RecyclerView.Adapter<MyCustomAdapter.myviewholder> {

    Context context;
    ArrayList<Blog> list;
    List <String> imageUrls;
    //List<String> imageUrls ;
    LayoutInflater inflator;
    int lastPosition = 1;
    boolean mprogressLike = true,mprogressview = true;
    DatabaseReference likeDatabaseReference;
    FirebaseAuth firebaseAuth;
    DatabaseReference blogDatabaseReference;


    public MyCustomAdapter(Context context, ArrayList<Blog> list,FirebaseAuth firebaseAuth,DatabaseReference blogDatabaseReference, DatabaseReference likeDatabaseReference) {

        this.context=context;
        this.list=list;
        inflator=LayoutInflater.from(context);
        this.likeDatabaseReference=likeDatabaseReference;
        this.firebaseAuth=firebaseAuth;
        this.blogDatabaseReference=blogDatabaseReference;
    }
    @Override
    public myviewholder onCreateViewHolder(ViewGroup parent, int position) {

        View v=inflator.inflate(R.layout.posts,parent,false);//this view will contain appearance of each layout i.e each row..
        myviewholder holder=new myviewholder(v);// we are passing the view of each row to the myviewholder class
        return holder;
    }

    @Override
    public void onBindViewHolder(final myviewholder holder, int position) {//here we will inflate datas in the widgets i.e image and title..
        //It is called for each row..so every row is inflated here..

        final Blog p=list.get(position);
        holder.title.setText(p.getTitle());
        holder.username.setText(p.getUsername());
        holder.viewno.setText(p.getTimestamp());
        /*int count = 0;

        for(HospitalModel.Images images: hospitalModelList.get(position).getImagesList()) {
            count += images.size();
        }*/


        for(Blog model : list) {
            imageUrls = new ArrayList<>();;
            imageUrls.addAll(model.getUrl());
            Log.v("IMURLSSS", String.valueOf(imageUrls));


            Picasso.with(context).load(imageUrls.get(position)).into(holder.imageview);
            Log.v("IMGGPOS", imageUrls.get(position));
        }

        Picasso.with(context).load(p.getImage()).into(holder.userdp);
    }



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

    public class myviewholder extends RecyclerView.ViewHolder implements View.OnClickListener {
        // It contains the elements in each row that we will inflate in the recyclerView..
        TextView title,desc,username,likeno,viewno;
        ImageView imageview,userdp, over, comments, likes;
        ImageButton likebtn,viewbtn;

        public myviewholder(View itemView) {
            super(itemView);
            title = (TextView) itemView.findViewById(R.id.blog_desc);//here we link with the elements of each view i.e each row and
            // desc = (TextView) itemView.findViewById(R.id.postdesc);//here we link with the elements of each view i.e each row and
            username = (TextView) itemView.findViewById(R.id.blog_user_name);
            viewno = (TextView) itemView.findViewById(R.id.blog_date);
            likeno = (TextView) itemView.findViewById(R.id.blog_like_count);
            userdp = (ImageView) itemView.findViewById(R.id.blog_user_image);
            imageview = (ImageView) itemView.findViewById(R.id.blog_image);
            comments = (ImageView) itemView.findViewById(R.id.blog_comment_icon);
            //here we link with the elements of each view i.e each row and
            // likebtn = (ImageButton)itemView.findViewById(R.id.likebtn);
            // viewbtn = (ImageButton)itemView.findViewById(R.id.viewbtn);
            comments.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mprogressview = true;
                    int pos = getAdapterPosition();
                    Blog b = list.get(pos);
                    Intent intent = new Intent(context,CommentBox.class);
                    Bundle bundle = new Bundle();
                    bundle.putString("post_key",b.getUid().toString());
                    intent.putExtras(bundle);
                    context.startActivity(intent);
                }
            });
            over = (ImageView) itemView.findViewById(R.id.overflow);


            over.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showFilterPopup(v);
                }
            });

        });

        itemView.setOnClickListener(this);
    }

}

1 个答案:

答案 0 :(得分:0)

要显示所有这些网址,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference urlRef = rootRef.child("Blog").child(uid).child("url");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String url = ds.getValue(String.class);
            Log.d("TAG", url);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
urlRef.addListenerForSingleValueEvent(valueEventListener);

建议您使用 here 从Firebase实时数据库检索数据并使用RecyclerViewFirebaseRecyclerAdapter中显示数据。

修改

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Blog").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String uid = dataSnapshot.child("uid").getValue(String.class);
        String title = dataSnapshot.child("title").getValue(String.class);
        String timestamp = dataSnapshot.child("timestamp").getValue(String.class);
        Log.d("TAG", uid + " / " + title  + " / " + timestamp);

        for(DataSnapshot ds : dataSnapshot.child("url").getChildren()) {
            String url = ds.getValue(String.class);
            Log.d("TAG", url);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);