1、build.gradle的配置
android {
...
buildFeatures {
dataBinding true
}
}
2、进行简单布局
activity_main的布局
item_layout的布局
MainActivity的使用
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.os.Bundle;
import com.example.bindingrecyclerview.adapter.RecyclerViewAdapter;
import com.example.bindingrecyclerview.databinding.ActivityMainBinding;
import com.example.bindingrecyclerview.model.User;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private RecyclerViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
ArrayList users = new ArrayList<>();
for (int i = 0; i <1000;i++){
User user = new User();
user.setAge("20");
user.setUsername("姓名"+i);
user.setRose("管理员"+i);
users.add(user);
}
binding.recyclerview.setLayoutManager(new LinearLayoutManager(this));
adapter = new RecyclerViewAdapter(users);
binding.recyclerview.setAdapter(adapter);
}
}
adapter 的使用
import android.view.LayoutInflater; import android.view.ViewGroup; import com.example.bindingrecyclerview.R; import com.example.bindingrecyclerview.databinding.ItemLayoutBinding; import com.example.bindingrecyclerview.model.User; import java.util.ArrayList; import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.RecyclerView; public class RecyclerViewAdapter extends RecyclerView.Adapter{ ArrayList list; public RecyclerViewAdapter(ArrayList list) { this.list = list; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { ItemLayoutBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.item_layout ,parent, false); return new MyViewHolder(binding); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { User user = list.get(position); MyViewHolder viewHolder = (MyViewHolder)holder; viewHolder.itemBinding.setViewModel(user); } @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ ItemLayoutBinding itemBinding; public MyViewHolder(@NonNull ItemLayoutBinding itemView) { super(itemView.getRoot()); itemBinding = itemView; } } }



