簡體   English   中英

數據綁定在對話框中不起作用 - 為什么?

[英]Data Binding Not Working On Dialog - why?

我是 android 新手,我嘗試從回收視圖中獲取數據的詳細信息。 單擊列表中的項目后,它會顯示該項目的詳細信息。 當我使用普通方法(R.findview)時它工作得很好,但是當我使用數據綁定時,它不會在對話框上顯示任何細節。

Pojo類:

    public class DosenModel {
    private String nama;
    private String id;
    private String pelajaran;
    private String foto;

    @BindingAdapter("loadFotoDosen")
    public  static void loadImage(ImageView imageView, String imageUrl) {
        Glide.with(imageView.getContext())
                .load(imageUrl)
                .into(imageView);
    }
}

這就是我在適配器中初始化數據綁定的方式

 public DosenAdapter.MyAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    ListItemBinding listItemBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.list_item, parent, false);
    return new MyAdapterViewHolder(listItemBinding);
}

我如何嘗試在片段中顯示對話框

   private void detailDialog(DosenModel dosenModel){
    AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
    Log.d("Dosen", dosenModel.toString());
    detailLayoutBinding.setDosen(dosenModel);
    AlertDialog dialog = builder.create();
    dialog.show();
}

來自適配器的數據保存在 dosenmodel 變量中,我已經使用 Log.d 檢查了數據

詳細 XML :

<?xml version="1.0" encoding="utf-8"?>
<layout>
    <data>
        <variable
            name="dosen"
            type="example.com.cleancodetest.model.DosenModel" />
    </data>
    <LinearLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/title"
            android:layout_marginStart="90dp"
            android:text="DETAIL DOSEN"
            android:textSize="24sp"
            android:layout_marginTop="20dp" />

        <ImageView
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:id="@+id/view_foto"
            android:layout_marginStart="100dp"
            app:loadFotoDosen="@{dosen.foto}"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/view_id"
            android:layout_marginStart="150dp"
            android:layout_marginTop="20dp"
            android:text="@={dosen.id}"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/view_nama"
            android:layout_marginStart="150dp"
            android:textAlignment="center"
            android:text="@={dosen.nama}"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/view_pelajaran"
            android:layout_marginStart="150dp"
            android:textSize="15sp"
            android:textAlignment="center"
            android:text="@={dosen.pelajaran}"/>
    </LinearLayout>
</layout>

如果需要更多詳細信息,請隨時詢問。謝謝。

您需要在對話框構建器上調用setView(detailLayoutBinding.getRoot())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM