gpt4 book ai didi

android - 数据绑定(bind) onClick 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:26 25 4
gpt4 key购买 nike

我刚开始使用 DataBinding,我的 onClick 出了点问题。

GameViewModel.java

public void onClickItem(int row, int col){
Log.d("click","row: "+row+" col: "+col);
}
@BindingAdapter("load_image")
public static void loadImage(ImageView view,int imageId) {
view.setImageResource(getDrawable(imageId));
}

GameFragment.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//View view=inflater.inflate(R.layout.fragment_game, container, false);
FragmentGameBinding binding = DataBindingUtil.inflate(inflater, R.layout.fragment_game, container, false);
View view = binding.getRoot();
ButterKnife.bind(this,view);
binding.setGameViewModel(gameViewModel);
gameViewModel= ViewModelProviders.of(getActivity()).get(GameViewModel.class);
gameViewModel.init();
return view;
}

fragment_game.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"

tools:context=".view.GameFragment">

<data>
<import type="android.support.v4.app.Fragment"/>
<import type="android.view.View"/>

<variable
name="gameViewModel"
type="harkor.addus.viewmodel.GameViewModel" />
</data>


<android.support.constraint.ConstraintLayout
(...)>

<TextView
(...)>

<android.support.constraint.ConstraintLayout
(...)>

<ImageView
android:id="@+id/image_puzzle11"
android:src="@android:color/holo_green_dark"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:onClick="@{() -> gameViewModel.onClickItem(1,1)}"
app:load_image="@{0}"
app:layout_constraintBottom_toTopOf="@+id/image_puzzle21"
app:layout_constraintDimensionRatio="w,1:1"
app:layout_constraintEnd_toStartOf="@+id/image_puzzle12"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
(...)

load_image 正在工作,但 onClick 什么都不做...编译无错误,按钮在设备上单击时无崩溃,控制台无结果...

最佳答案

请检查以下代码:

你已经写了调用图片的点击:

 android:onClick="@{() -> gameViewModel.onClickItem(1,1)}"

尝试像下面这样写并再次检查:

android:onClick="@{(v) -> gameViewModel.onClickItem(1,1)}"

根据指南,这不是实现架构原则的方法,我们可以按照 MVVM 架构按照以下方式工作:1. 创建接口(interface)2. 将界面定义为布局文件中的处理程序:

<variable
name="handler"
type="com.cityguide.interfaces.MustVisitItemListener"></variable>

3.现在我们使用此处理程序将 onclick 定义为:

android:onClick="@{(v) ->handler.onGalleryItemClick(v,currentPosition,photo)}"
  1. 在将 Handler 与 View 绑定(bind)之前,使用我们的 java Class 或 Activity 类实现 Handler,如下所示:
private MustVisitItemListener mItemListener;

mItemListener = new MustVisitItemListener() { };

5.使用绑定(bind)对象设置接口(interface)处理程序如下:

mbinding.setHandler(mItemListener);

关于android - 数据绑定(bind) onClick 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51418468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com