为什么不从子适配器调用方法?

时间:2017-12-14 14:13:51

标签: android android-databinding

我使用数据绑定。

这里是父适配器:

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()

1 个答案:

答案 0 :(得分:1)

使用静态修饰符进行调整的方法没有hieritance。只需删除静态修改器,它就可以正常工作