Примечание: также просмотрите отредактированный код внизу для дальнейшей разработки.
Как мы можем прикрепить / назначить событие спиннеру, используя привязку данных, в частностипо привязкам слушателя.Вот статья об использовании привязки данных.Итак, я пробовал код и не смог назначить событие.
на Android Studio 3.2.1
activity_parents_reg.xml
<data>
<import type="java.util.ArrayList" />
<variable name="handlers"
type="com.example.myUser.myapplication.custom.MyHandlers"
/>
<variable
name="cities"
type="ArrayList<String>"
/>
<data>
<Spinner
android:id="@+id/dd_city"
android:entries="@{cities}"
android:onClick="@{() -> handlers.onClickFriend()}"
style="@style/dropdown"
/>
MyHandlers.java
public class MyHandlers {
public void onClickFriend(View view) {}
}
ParentsReg.java
// Data binding
ActivityParentsRegBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_parents_reg);
binding.setCities(ConstData.getCitiesList());
binding.setHandlers(new MyHandlers());
Вот ошибка, полученная при компиляции:
Found data binding errors.
****/ data binding error ****msg:cannot find method onClickFriend() in class
com.example.myUser.myapplication.custom.MyHandlers
file:/home/myUser/AndroidStudioProjects/MyApplication/app/src/main/
res/layout/activity_parents_reg.xml loc:103:37 - 103:60
****\ data binding error ****
Отредактировано:
Теперь, после наблюдений и экспериментов.У меня есть другая перспектива моего кода, которая обеспечивает синтаксис в порядке.
На самом деле спиннер создает проблемы.Может быть, для установки событий нужен адаптер.
Здесь, работая с Button
, мы также немного изменили код:
// Activity layout changes.
<Button
android:id="@+id/btn_reg_submit"
android:text="Submit"
android:onClick="@{(view) -> handlers.onClickFriend(view)}"
style="@style/btn_secondary"
/>
// MyHandlers class changes.
public class MyHandlers {
private Context _context;
public MyHandlers(Context context) {
_context = context;
}
public void onClickFriend(View view) {
Toast.makeText(_context, "Button Clicked", Toast.LENGTH_SHORT).show();
}
}
// Activity class changes.
binding.setHandlers(new MyHandlers(context));
Все еще застрял с вертушкой.
Надеюсь, я получу ответ.