Android, атрибут которого установлен на привязку onScrollChanged () - PullRequest
0 голосов
/ 25 марта 2019

Я хочу выполнить onScrollChangeListner при связывании представлений.Но я не знаю, какой атрибут установлен на Android: .... в макете.

Я создаю горизонтальное представление прокрутки, пишу на ScrollChangeListner, затем я добавляю это представление к привязке.Прежде чем добавить представление к привязке, scrollview выполнил прослушиватель, и я увидел в нем изменения.Может быть, я должен добавить этот слушатель к макету?Но я не знаю, как.

Код в классе:

HorizontalScrollView horizontalScrollView = view.findViewById(R.id.scroll_view);
        horizontalScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
.
. execute code
.
}

Код в макете:

   <data>

        <variable
            name="sample"
            type=Class with my method />
    </data>

android:onScroll="@{() -> sample.onScrollChanged()}"

Обнаружены ошибки привязки данных.**** / ошибка привязки данных **** msg: не удается найти установщик для атрибута 'android: onScroll' с типом параметра lambda для android.widget.HorizontScrollView.**** \ ошибка привязки данных ****

1 Ответ

0 голосов
/ 25 марта 2019

вы можете сделать это с BindingAdapter

    @JvmStatic
    @BindingAdapter("onScrolled")
    fun setOnScroll(horizontalScrollView: HorizontalScrollView) {
        horizontalScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
                @Override
                public void onScrollChanged() { }
        )
    }

    onScrolled="@{() -> sample.onScrollChanged()}"
...