viewBinding在RecyclerView的初步简单使用

前言

上来先说明一下我的编译器版本是as4.0 beta2。
gradle:4.0.0-beta02,对应gradle-6.2.2-all.zip。

关于viewbiding的作用,我这里直接引用android开发者网站上的话:
通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
在大多数情况下,视图绑定会替代 findViewById。

打开视图绑定

在as版本和gradle版本同时满足条件后可以在build.gradle里设置开启。注意,这里不知道说是不是我用的版本有所变化,开启的方法和网上查到的3.6版本有所差别,也不知道以后会不会变,请以最新版为准

android {

    buildFeatures {
        viewBinding = true
    }
}

在recyclerview的简单使用

下面只展示几个写起来略有差别的部分
change_class.java

public class change_class extends Activity {
    private ChangeLayoutBinding Mbinding;
    private ArrayList<MyClass> myClass;
    private RecyclerView recyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager layoutManager;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Mbinding=ChangeLayoutBinding.inflate(this.getLayoutInflater());
        setContentView(Mbinding.getRoot());
        recyclerView=Mbinding.Rview;//这里就是id
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
 
    	//省略掉无关内容
        //ChangeAdapter adapter = new ChangeAdapter(one);
        recyclerView.setAdapter(adapter);
        show();
    }
    boolean show(){
       //获取第一项的viewholder
        RecyclerView.ViewHolder veve=recyclerView.findViewHolderForAdapterPosition(0);
        //这里使用的是viewbinding的bind方法,将viewholder的view传入
        OneLayoutBinding one=OneLayoutBinding.bind(veve.itemView);
        //通过viewbinding获取到文本内容并打印
        System.out.println(one.name.getText().toString());
        
        return true;

    }
}

layout/change_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/cback"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/Rview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_marginTop="60dp" />
</RelativeLayout>

ChangeAdapter.java

public class ChangeAdapter extends RecyclerView.Adapter<ChangeAdapter.ViewHolder> {
    
    ArrayList<Integer> start;
    ArrayList<Integer> end;
    MyClass one;
    public ChangeAdapter(MyClass in){
        start=new ArrayList<>();
        end=new ArrayList<>();
        one=in;
        //省略,大体就展示下样子
        }

    }
    @NonNull
    @Override
    public ChangeAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        OneLayoutBinding one=OneLayoutBinding one=OneLayoutBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
        //常规写法
        //View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.one_layout,parent,false);
        ViewHolder my=new ViewHolder(one);
        return my;

    }

    @Override
    public void onBindViewHolder(@NonNull ChangeAdapter.ViewHolder holder, int position) {
		//略
        holder.one.room.setText(one.getroom());
    }

    @Override
    public int getItemCount() {
        return start.size()+1;//这个我有别的用途所以写的这样
    }

    public class ViewHolder extends RecyclerView.ViewHolder{
        OneLayoutBinding one;
        public ViewHolder(@NonNull OneLayoutBinding item) {
            super(item.getRoot());
            one=item;//这里也做了修改,onelayout是我recyclerview中一项的xml
        }
    }
}

viewbindingviewbinding使用起来极易上手,代码简洁,且更安全,虽然现在依然在测试阶段,不过相比也会在未来大行其道。ヾ(≧▽≦*)o

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要在 RecyclerView 适配器中使用视图绑定,需要进行以下步骤: 1. 在项目级别的 build.gradle 文件中,确保已经添加了以下依赖项: ```groovy dependencies { ... classpath "com.android.tools.build:gradle:4.0.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72" classpath "com.google.gms:google-services:4.3.3" } ``` 2. 在应用级别的 build.gradle 文件中,添加以下依赖项: ```groovy plugins { ... id 'kotlin-android' id 'kotlin-android-extensions' } android { ... buildFeatures { viewBinding true } } dependencies { ... } ``` 3. 在 RecyclerViewViewHolder 中添加一个视图绑定类的对象,例如: ```kotlin class MyViewHolder(private val binding: MyItemBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(data: MyData) { binding.textviewTitle.text = data.title binding.textviewDescription.text = data.description } } ``` 4. 在 RecyclerView 的适配器中,创建 ViewHolder 并使用视图绑定类来初始化它,例如: ```kotlin class MyAdapter(private val dataList: List<MyData>) : RecyclerView.Adapter<MyViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { val binding = MyItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) return MyViewHolder(binding) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.bind(dataList[position]) } override fun getItemCount(): Int { return dataList.size } } ``` 这样就可以在 RecyclerView 的适配器中使用视图绑定了。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值