从毕加索加载图像时,文本消失-Android

时间:2019-06-22 11:25:36

标签: android android-recyclerview picasso

我有一个回收站视图,其中加载了图像和文本。当通过Picasso从URL加载图像时,回收者视图将松散其文本。松散文本的元素不会从www而是从android drawable文件夹加载图像。所有的图像都是相同的大小,我尝试使用相同的图像,它仍然会发生。如果您能提供任何见解,因为我不知道该怎么做或尝试。

以下是我的问题的图像:https://giphy.com/gifs/hR5w7IrCZ14T9M8o7A

---编辑---- 尝试了Radesh的答案没有用。尝试滑行而不是毕加索(似乎滑行要快得多)。问题似乎是回收商更新的方式。
我的onBindViewHolder

@Override
public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, int i) {
    myViewHolder.textItem.setText(categoryItem.get(i).getEng_name());
    if (categoryItem.get(i).getDefault_image().equals("empty") || categoryItem.get(i).getDefault_image().length() == 0) {
        Picasso.get().load(R.drawable.no_image).into(myViewHolder.image);
    } else {
        Glide.with(myViewHolder.context).load("https://i.ibb.co/wwT602t/lake-plastira.jpg").into(myViewHolder.image);
        //Picasso.get().load("https://i.ibb.co/wwT602t/lake-plastira.jpg").placeholder(R.drawable.loading_image).error(R.drawable.failed_to_load).into(myViewHolder.image);
    }
}


我加载的商品的xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardview_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardBackgroundColor="?attr/color4">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/item_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:src="@drawable/no_image"
        android:scaleType="fitStart" />
    <TextView
        android:id="@+id/item_name"
        android:textColor="?attr/color6"
        android:textSize="20sp"
        android:gravity="center"
        android:layout_gravity="bottom"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>
</android.support.v7.widget.CardView>


我的回收站查看代码

    recyclerView = (RecyclerView) findViewById(R.id.categories_rec);
    recyclerView.setHasFixedSize(true);
    layoutManager = new GridLayoutManager(this, 2);
    recyclerView.setLayoutManager(layoutManager);
    mAdapter = new SpecificCategoryAdapter(categoryItem);
    recyclerView.setAdapter(mAdapter);
    mAdapter.notifyDataSetChanged();

2 个答案:

答案 0 :(得分:2)

更改此代码

   <TextView
        android:id="@+id/item_name"
        android:textColor="?attr/color6"
        android:textSize="20sp"
        android:gravity="center"
        android:layout_gravity="bottom"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

对此

  <TextView
        android:id="@+id/item_name"
        android:textColor="?attr/color6"
        android:textSize="20sp"
        android:gravity="center"
        android:singleLine="true"
        android:maxLines="1"
        android:layout_gravity="bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

答案 1 :(得分:0)

因此,我找到了一个可运行的解决方案,问题得以解决。如果您有其他任何想法,请发布。我相信发生这种情况是因为该功能一直在等待图像,因此它从未终止过。

 myViewHolder.textItem.setText(categoryItem.get(i).getEng_name());
  if (categoryItem.get(i).getDefault_image().equals("empty") || categoryItem.get(i).getDefault_image().length() == 0) {
      Picasso.get().load(R.drawable.no_image).into(myViewHolder.image);       
  } else {
      final Handler handler = new Handler();
      final Runnable r = new Runnable() {
          public void run() {
              Glide.with(myViewHolder.context).load("https://i.ibb.co/wwT602t/lake-plastira.jpg").into(myViewHolder.image);
          }
      };
      handler.postDelayed(r, 1000);
  }