我使用数据绑定。
这里是父适配器:
public abstract class PreviewSortAdapter extends RealmRecyclerViewAdapter {
protected Context context;
@BindingAdapter("imageUrl")
public static void loadImage(ImageView view, String imageUrl) {
Glide.with(view.getContext()).load(imageUrl)
.apply(RequestOptions.bitmapTransform(
new GlideRoundedCornersTransformation(view.getContext(), (int) AndroidUtil.dpToPx(view.getContext(),
view.getContext().getResources().getInteger(R.integer.image_rounded_corner_radius_dp)),
0, GlideRoundedCornersTransformation.CornerType.TOP)))
.into(view);
}
}
这是我的孩子适配器:
public class MapListSortAdapter extends PreviewSortAdapter {
public MapListSortAdapter(Context context, OrderedRealmCollection<Merchant> data) {
super(context, data, true);
}
@BindingAdapter("imageUrl")
public static void loadImage(ImageView view, String imageUrl) {
Debug.d(TAG, "loadImage: ");
Glide.with(view.getContext()).load(imageUrl)
.into(view);
}
@Override
protected int getLayoutForPosition(int position) {
return R.layout.map_list_item;
}
}
正如您在我的子适配器中看到的,我覆盖了方法loadImage()
。我想从子适配器调用方法loadImage()
。
Herer map_list_item.xml :
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="item"
type="com.myproject.android.customer.api.model.Merchant" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:minHeight="90dp">
<ImageView
android:id="@+id/imageViewPhoto"
android:layout_width="90dp"
android:layout_height="90dp"
android:scaleType="centerCrop"
app:imageUrl="@{item.preview.formats.reference.url}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</layout>
如您所见,我使用自定义标记app:imageUrl
来调用方法loadImage()
。
问题是方法是调用,但它调用父适配器 - PreviewSortAdapter.loadImage()
。
但我需要在子适配器中调用此方法:MapListSortAdapter.loadImage()
。
答案 0 :(得分:1)
使用静态修饰符进行调整的方法没有hieritance。只需删除静态修改器,它就可以正常工作