Изображения исчезают после 11-го элемента в RecyclerView - PullRequest
0 голосов
/ 30 мая 2018

Я создал Firebase RecyclerView, который содержит CardView.Внутри CardView есть ImageView и TextView.Если изображение загружено вместе с его описаниями (TextView), то и ImageView, и TextView видны, иначе будет виден только TextView.Проблема в том, что когда RecyclerView содержит более 11 элементов, изображения автоматически исчезают, и видны только текстовые изображения.Не уверен, почему это происходит.Ниже приведен код:

public class MainView extends 
    AppCompatActivity {
    private RecyclerView mPlacelist; protected void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState); mPlacelist= (RecyclerView) findViewById(R.id.Place_list); mPlacelist.setHasFixedSize(true);

LinearLayoutManager mLayoutManager=new LinearLayoutManager(MainView.this); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); mPlacelist.setLayoutManager(mLayoutManager); } public static class  MainViewHolder extends RecyclerView.ViewHolder {
    View mView;


    public MainViewHolder(View itemView,int viewType) {
        super(itemView);
        mView = itemView;


    }
    public void setDescription(String description) {
        TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
        post_desc.setText(description);
    }

    public void setImage(final Context ctx, final String image) {
        ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
        //If image exist
        if (image != null) {

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

        } else if (image == null) {

           //no image then imageview invisible
            Picasso.with(ctx).cancelRequest(post_image);
            post_image.setVisibility(View.INVISIBLE);
            post_image.setVisibility(View.GONE);

        }
    }

   }

final FirebaseRecyclerAdapter<MainBlogView, MainView.MainViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<MainBlogView, MainView.MainViewHolder>(
        MainBlogView.class, R.layout.recyclerplace, MainView.MainViewHolder.class, databaseReference ) {
    @Override
    protected void populateViewHolder(final MainView.MainViewHolder viewHolder, MainBlogView model, int position) {





       viewHolder.setDescription(model.getDescription());
        viewHolder.setImage(getApplicationContext(), model.getImage());
        viewHolder.setTimestamp(model.getTimestamp());

}  @Override
        public int getItemViewType(int position) {

            return super.getItemViewType(position);
        }

    };
    firebaseRecyclerAdapter.notifyDataSetChanged();
    mPlacelist.setAdapter(firebaseRecyclerAdapter);



} }

Любая помощь приветствуется.Спасибо

1 Ответ

0 голосов
/ 30 мая 2018

Вместо этого кода:

if (image != null) {

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

Используйте это:

if (image != null) {

        post_image.setVisibility(View.VISIBLE);
Picasso.with(ctx).load(image).fit().centerInside().into(post_image);

    }

Вы получили эту «ошибку», потому что в 12-й строке нет изображения, а код скрывает его, иRecyclerView повторно использует строки для производительности.

...