【问题标题】:rendering images from firebase with FirebaseRecyclerAdapter and picasso is extremly slow使用 FirebaseRecyclerAdapter 和 picasso 从 firebase 渲染图像非常慢
【发布时间】:2017-02-19 21:18:43
【问题描述】:

使用 FirebaseRecyclerAdapter 和 picasso 显示来自 firebase 的图像非常慢,有没有更好、更快的方法在 recyclerview 中列出来自 firebase 的图像?

public class TileContentFragment extends Fragment {




    private FirebaseAuth mFirebaseAuth;
    private FirebaseUser mFirebaseUser;
    private DatabaseReference mDatabase;
    RecyclerView recyclerView;



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

        // Initialize Firebase Auth and Database Reference
        mFirebaseAuth = FirebaseAuth.getInstance();
        mFirebaseUser = mFirebaseAuth.getCurrentUser();
        mDatabase = FirebaseDatabase.getInstance().getReference("Items");


        recyclerView = (RecyclerView) inflater.inflate(R.layout.recycler_view, container, false);
        recyclerView.setHasFixedSize(true);

        FirebaseRecyclerAdapter<Item, BlogViewHolder> firebaseRecyclerAdapter =new FirebaseRecyclerAdapter<Item, BlogViewHolder>(
                Item.class,
                R.layout.item_tile,
                BlogViewHolder.class,
                mDatabase)  {



            @Override
            protected void populateViewHolder(BlogViewHolder viewHolder, Item model,int position) {
                viewHolder.setTitle(model.getName());
                viewHolder.setImage(getApplicationContext(), model.getProfilePic());
            }
        };
        recyclerView.setAdapter(firebaseRecyclerAdapter);
        // Set padding for Tiles
        int tilePadding = getResources().getDimensionPixelSize(R.dimen.tile_padding);
        recyclerView.setPadding(tilePadding, tilePadding, tilePadding, tilePadding);
        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
        return recyclerView;
    }

    //View Holder For Recycler View
    public static class BlogViewHolder extends RecyclerView.ViewHolder  {
        View mView;
        public BlogViewHolder(View itemView) {
            super(itemView);
            mView= itemView;
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.androidsquad.space/"));
                    Intent browserChooserIntent = Intent.createChooser(browserIntent , "Choose browser of your choice");
                    v.getContext().startActivity(browserChooserIntent);
                }
            });
            /******** For More Android Tutorials .. Download "Master Android" Application From Play Store Free********/
        }
        public void setTitle(String title){
            TextView post_title = (TextView)mView.findViewById(R.id.tile_title);
            post_title.setText(title);
        }
        public void setImage(Context ctx , String image){
            ImageView post_image = (ImageView)mView.findViewById(R.id.tile_picture);
            // We Need TO pass Context
            Picasso.with(ctx).load(image).into(post_image);
        }    }}

【问题讨论】:

  • 也许你应该尝试使用 Glide 而不是 Picasso github.com/bumptech/glide 这应该会改善加载,因为 Glide 默认会缩减图像而不是加载它们的全尺寸。

标签: android firebase firebase-realtime-database picasso


【解决方案1】:

尝试使用自动调整图像大小

Picasso.with(ctx).load(image).fit().into(post_image);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多