由于databinding能为承担部分页面功能,所以我们可以不对TextView初始化的情况下对TextView进行修改,需要用到实体类
package com.animee.databinding; public class Idol { public String name; public String star; public Idol(String name, String star) { this.name = name; this.star = star; } }
这是activity
package com.animee.databinding; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import android.os.Bundle; import com.animee.databinding.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { private ActivityMainBinding activityMainBinding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //得到对象 activityMainBinding= DataBindingUtil.setContentView(this,R.layout.activity_main); //不用处理textview的初始化 Idol idol=new Idol("水獭","五星好评"); activityMainBinding.setIdol(idol); } }
这是xml,这里采用约束布局
tips:
1.想要有 <data> <variable name="idol" type="com.animee.databinding.Idol" /> </data>
的效果需要在build.gradle中导入以下代码
在布局xml开头使用Alt+回车即可实现xml布局
<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="idol" type="com.animee.databinding.Idol" /> </data> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.5" /> <ImageView android:id="@+id/imageView" android:layout_width="300dp" android:layout_height="300dp" android:src="@drawable/drawable4" app:layout_constraintBottom_toTopOf="@+id/guideline2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.789" tools:srcCompat="@tools:sample/avatars" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{idol.name}" android:textSize="24sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline2" app:layout_constraintVertical_bias="0.216" tools:text="姓名" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{idol.star}" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" tools:ignore="MissingConstraints" tools:text="五星" /> </androidx.constraintlayout.widget.ConstraintLayout> </layout>
tips:运行时如果出现闪退报错:couldn't make a guess for xxx
原因
1.实体类名要首字母大写
2.包名要首字母小写
效果图