簡體   English   中英

Android 與 int 類型的雙向綁定

[英]Android two way binding with int type

我在使用 Integer 數據類型實現兩種方式綁定時遇到了一些問題。 我有回收視圖用戶必須插入學位,當他單擊按鈕時,數據 retrofit 會將其發送到服務器。 但是當用戶在度字段中插入數字時,它將返回 0
如何解決它請。

Model Class:

public class QuModel extends AppCompatActivity {
   public String Qu;
   public String answer1;
   public String answer2;
   public String answer3;
   public String answer4;
   public int degree ;

    public QuModel() {
    }
}

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

    <data>
        <variable
            name = "qumodel"
            type = "com.hota.exam.model.QuModel"/>

    </data>

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardCornerRadius="4dp"
        tools:ignore="ExtraText">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="4dp">


            <EditText
                android:id="@+id/editTextQuestion"
                android:layout_width="322dp"
                android:layout_height="84dp"
                android:layout_marginTop="64dp"
                android:ems="10"
                android:hint="Question"
                android:inputType="textPersonName"
                android:padding="4dp"
                android:text="@={qumodel.Qu}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.539"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/QuNumber"
                android:layout_width="231dp"
                android:layout_height="41dp"
                android:layout_marginTop="24dp"
                android:padding="4dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.266"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />


            <EditText
                android:id="@+id/editTextAnswer1"
                android:layout_width="183dp"
                android:layout_height="48dp"
                android:layout_marginTop="180dp"
                android:hint="Answer 1"
                android:inputType="textPersonName"
                android:padding="4dp"
                android:text="@={qumodel.answer1}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.07"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/editTextAnswer2"
                android:layout_width="183dp"
                android:layout_height="48dp"
                android:layout_marginTop="232dp"
                android:hint="Answer 2"
                android:inputType="textPersonName"
                android:padding="4dp"
                android:text="@={qumodel.answer2}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.07"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/editTextAnswer4"
                android:layout_width="183dp"
                android:layout_height="48dp"
                android:layout_marginTop="328dp"
                android:hint="Answer 4"
                android:inputType="textPersonName"
                android:padding="4dp"
                android:text="@={qumodel.answer4}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.07"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/editTextAnswer3"
                android:layout_width="183dp"
                android:layout_height="48dp"
                android:layout_marginTop="276dp"
                android:hint="Answer 3"
                android:inputType="textPersonName"
                android:padding="4dp"
                android:text="@={qumodel.answer3}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.07"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <EditText
                android:id="@+id/degree"
                android:layout_width="98dp"
                android:layout_height="45dp"
                android:layout_marginTop="192dp"
                android:hint="Degree"
                android:inputType="number"
                android:padding="4dp"
                android:text="@{String.valueOf(qumodel.degree)}"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="1.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

        </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.cardview.widget.CardView>
</layout> 

適配器:

public class QuAdapter extends RecyclerView.Adapter<QuAdapter.QuViewHolder> {

    int id;
    private ArrayList<QuModel> dataModelList;
    private static final String TAG = "QuAdapter";

    public QuAdapter(ArrayList<QuModel> dataModelList) {
        this.dataModelList = dataModelList;
    }

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

    @SuppressLint("SetTextI18n")
    @Override
    public void onBindViewHolder(@NonNull QuViewHolder holder, int position) {

        QuModel quModel = dataModelList.get(position);
        holder.bind(quModel);
        int Counter = position + 1 ;
            holder.listItemBinding.QuNumber.setText("Qu no : " + Counter);
    }

    @Override
    public int getItemCount() {
        return dataModelList.size();
    }


    public static class QuViewHolder extends RecyclerView.ViewHolder {
        public ListItemBinding listItemBinding;

        public QuViewHolder(ListItemBinding listItemBinding) {
            super(listItemBinding.getRoot());
            this.listItemBinding = listItemBinding;
        }

        public void bind(Object obj) {
            listItemBinding.setVariable(BR.qumodel, obj);
            listItemBinding.executePendingBindings();
        }
    }
}

1- 制作學位字符串並制作 inputType 數字。

2-在適配器處添加 textwhatcher 以處理文本中的更改。

3-在發送到服務器之前使用 Integer.parseInt 轉換類型。

暫無
暫無

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

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