我有一个回收站视图,其中加载了图像和文本。当通过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();
答案 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);
}