?? 作者介紹:友友們好我是亂披風(fēng)錘,大二學(xué)生黨一枚
??作者主頁:亂披風(fēng)錘的個(gè)人博客主頁.亂披風(fēng)錘
??我和友友們一樣喜歡編輯,天天敲代碼,沉迷學(xué)習(xí),日漸消瘦。很榮幸能向大家分享我的所學(xué),和大家一起進(jìn)步。如果文章有錯(cuò)誤,歡迎在評論區(qū)指正。那么開始今天的學(xué)習(xí)吧!
?? 支持我:點(diǎn)贊??+收藏??+留言??
一、開啟Databinding
//在build.gradle中添加
android {
compileSdk 32
dataBinding{
enabled=true
}
二、添加依賴
implementation("com.squareup.okhttp3:okhttp:4.9.3")
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
三、打開網(wǎng)絡(luò)權(quán)限
四、生成databinding布局
光標(biāo)在布局文件的根布局–>點(diǎn)擊Alt + Enter–>點(diǎn)擊 “Convert to data binding layout”
<?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>
<!--放變量數(shù)據(jù)-->
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
五、創(chuàng)建數(shù)據(jù)類
package com.hnucm.databinding;
import androidx.databinding.BaseObservable;
public class Person extends BaseObservable {
public int age;
public String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyChange();
}
}
六、在data變量中聲明變量及類全名
<data>
<variable
name="itemlist"
type="com.hnucm.databinding.ChatItem.ChatlistDTO" />
</data>
七、通過@{}使用變量;(默認(rèn)值無需加引號(hào),且只在預(yù)覽視圖顯示)
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="13dp"
android:text="@{itemlist.name}"
app:layout_constraintStart_toEndOf="@+id/imageView"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="7dp"
android:layout_marginTop="20dp"
android:text="@{itemlist.content}"
app:layout_constraintStart_toStartOf="@+id/textView"
app:layout_constraintTop_toBottomOf="@+id/textView" />
八、databinding在recycleview中使用
ActivityMainBinding activityMainBinding;
public List<ChatItem.ChatlistDTO> chatlist = new ArrayList<>();
MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
Api api = RetrofitUtils.getRetrofit("http://121.4.44.56/").create(Api.class);
Call<ChatItem> chatItemCall = api.getChatList();
chatItemCall.enqueue(new Callback<ChatItem>() {
@Override
public void onResponse(Call<ChatItem> call, Response<ChatItem> response) {
ChatItem chatItem = response.body();
chatlist.addAll(chatItem.chatlist);
myAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<ChatItem> call, Throwable t) {
}
});
myAdapter = new MyAdapter();
activityMainBinding.recyclerView.setAdapter(myAdapter);
activityMainBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
public class MyAdapter extends RecyclerView.Adapter<MyViewHodler>{
@NonNull
@Override
public MyViewHodler onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ChatItemBinding chatItemBinding = DataBindingUtil.
inflate(LayoutInflater.from(MainActivity.this),R.layout.chat_item,parent,false);
MyViewHodler myViewHodler = new MyViewHodler(chatItemBinding.getRoot());
myViewHodler.chatItemBinding = chatItemBinding;
return myViewHodler;
}
@Override
public void onBindViewHolder(@NonNull MyViewHodler holder, int position) {
holder.chatItemBinding.setItemlist(chatlist.get(position));
}
@Override
public int getItemCount() {
return chatlist.size();
}
}
public class MyViewHodler extends RecyclerView.ViewHolder{
public ChatItemBinding chatItemBinding;
public MyViewHodler(@NonNull View itemView) {
super(itemView);
}
}
}
文章來源:http://www.zghlxwxcb.cn/news/detail-424075.html
總結(jié)
好了,那么今天的學(xué)習(xí)就到這里了。友友們覺得不錯(cuò)的可以給個(gè)關(guān)注,點(diǎn)贊或者收藏哦!感謝各位友友們的支持。以下的代碼希望各位大佬們自行檢驗(yàn)哦,畢竟親手操作讓記憶更加深刻。文章來源地址http://www.zghlxwxcb.cn/news/detail-424075.html
到了這里,關(guān)于Android Studio第12課關(guān)于databinding的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!