Recyclerview GridLayout держит верхнюю правую сетку пустой для неровных изображений - PullRequest
0 голосов
/ 30 ноября 2018

Я использую менеджер компоновки сетки в утилите просмотра, чтобы получить некоторые изображения.Конкретный код:

mgridLayoutManager = new GridLayoutManager(getActivity(),2);
        mgridLayoutManager.setReverseLayout(true);

        mBlogList.setHasFixedSize(true);

        mBlogList.setLayoutManager(mgridLayoutManager);

        mBlogList.setNestedScrollingEnabled(false);

Ничего страшного, когда у меня четное число изображений, скажем, 16. Но когда у меня нечетное количество изображений, скажем, 17, так как я использую обратное расположение, просмотрщик начинает получатьизображения (от старого к новому) от основания до верха.А так как есть 2 столбца и 17 изображений, верхнее правое место остается пустым.Это выглядит действительно глупо.Полагаю, нормально держать пустое место в конце обзора переработчика, но держать пустое место только в начале обзора переработчика кажется таким не впечатляющим.Как это исправить, чтобы в самом нижнем ряду было пустое место при нечетном количестве изображений?

Вот данные базы данных Firebase для определенного поста:

Здесь я беру ссылку на изображение и использую Glide, чтобы показать его в обзоре переработчика.

Часть извлечения:

@Override
public void onStart() {
    super.onStart();



    FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder>(

            HomeBlog.class,
            R.layout.profile_row,
            BlogViewHolder.class,
            mDatabase


    )
    {
        @Override
        protected void populateViewHolder(BlogViewHolder viewHolder, HomeBlog model, int position) {

            final String post_key = getRef(position).getKey();

            viewHolder.setImage(post_key);

        }
    };

    mBlogList.setAdapter(firebaseRecyclerAdapter);

}

public static class BlogViewHolder extends RecyclerView.ViewHolder {

    View mView;

    public BlogViewHolder(View itemView) {
        super(itemView);

        mView = itemView;


    }


    public void setImage(String post_key) {


        final ImageView imagePView = (ImageView) mView.findViewById(R.id.profilePostImage);

        DatabaseReference val = FirebaseDatabase.getInstance().getReference().child("BlogPosts").child(post_key ) .child("image");

        val.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                String ppc = dataSnapshot.getValue(String.class);

                RequestOptions placeholderRequest = new RequestOptions();
                placeholderRequest.placeholder(R.drawable.loading_background);
                try {

                    Glide.with(mView.getContext()).setDefaultRequestOptions(placeholderRequest).load(ppc).into(imagePView);

                }catch(Exception e){}

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

    }

}
...