如何解决Android 双向绑定 int 类型
我在使用整数数据类型实现双向绑定时遇到了一些问题。
我有回收视图用户必须插入度数,当他单击按钮时,数据改造会将其发送到服务器。但是当用户在度数字段中插入数字时,它将返回 0
请如何修复它。
模型类:
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- 生成度数字符串并生成输入类型号。
2- 在适配器处添加 textwhatcher 以处理文本中的更改。
3- 在将类型发送到服务器之前使用 Integer.parseInt 转换类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。