发送带有标记的数据绑定 ID 不起作用



我正在做一个Android项目,其中有一个要显示的设备列表,这要归功于基本适配器。每个设备都有一个光线级别,我想用搜索栏修改它。 我试图用这样的标签识别设备搜索栏:

<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:max="100"
android:tag="@{Integer.toString(ampoule.idx)}" />

这是我的安瓿对象:

private String Type ;
private int LevelInt;
private String hueColor;
private String Name;
private int idx;

和绑定:

<data>
<variable
name="ampoule"
type="com.example.****.***.containers.LightDevice"
/>
</data>

现在,当我尝试获取基本适配器的标签以获取对象时,出现以下错误:

FATAL EXCEPTION: main
      Process: com.example.***.***, PID: 9057
      java.lang.NumberFormatException: Invalid int: "binding_4"

这是我得到标签的地方:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
setDimmableLevel(seekBar.getTag().toString(),progress);
}
private void setDimmableLevel(String idx, final int progress) {
Map<String, String> queryParams = new HashMap<>();
Log.d("TAG", "valeur idx : "+idx);
final LightDevice light = LightList.getInstance().getLight(Integer.parseInt(idx));

错误是我的标签值binding_4而不是安瓿.idx值...

知道我该怎么办吗?

谢谢

请尝试这个,我认为它的类型铸造相关问题,希望它的工作。

<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:max="100"
android:tag="@{String.valueof(ampoule.idx)}" />

我想你忘记了绑定步骤。绑定后,应正确设置 View 的标记。如果已创建绑定,则可能需要调用binding.executePendingBindings()以在下一行之前初始化标记值。否则,它将延迟到下一帧,以允许在更新视图之前累积绑定值更改。

对于活动,您应该像这样膨胀布局:

@Override
public void onCreate(...) {
super.onCreate(...);
MyLayoutBinding binding = DataBindingUtil.setContentView(this, R.layout.my_layout);
binding.setAmpoule(new LightDevice());
}

如果您从其他位置充气,则可以使用静态充气机。例如,从片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle icicle) {
MyLayoutBinding binding = MyLayoutBinding.inflate(inflater, container, false);
binding.setAmpoule(new LightDevice());
return binding.getRoot();
}

最新更新