RecyclerView Adapter与DataBinding封装

1、创建一个类,并继承ViewHolderr
创建一个自己的ViewHolder,如果使用父类,则和SimpleAdapter用法一样。
public class MySingelTypeHolder extends ViewHolder<ItemFriendBinding> {
public MySingelTypeHolder(@NonNull ItemFriendBinding binding) {
super(binding);
//为头像添加点击事件和长按事件
binding.ivHeadPortrait.setOnClickListener(this);
binding.ivHeadPortrait.setOnLongClickListener(this);
}
}
2、创建一个类,并继承SingleTypeAdapter
注意这里的泛型参数,第三个参数使用的是上面创建的ViewHolder
/**
* 好友列表适配器
* 继承SingleTypeAdapter,可自定义viewholder
*/
public class MySingelTypeAdapter extends SingleTypeAdapter<ItemFriendBinding, FriendInfo,
MySingelTypeHolder> {
@Override
protected void onBindViewHolder(int position, MySingelTypeHolder viewHolder) {
viewHolder.getBinding().setFriendInfo(getDataList().get(position));
}
}
3、实例化对象并设置点击事件
mSingelTypeAdapter = new MySingelTypeAdapter();
mSingelTypeAdapter.setOnItemClickListener(binding ->
Toast.makeText(this, "您点击了:" + binding.getFriendInfo().getName(),
Toast.LENGTH_SHORT).show()
);
mSingelTypeAdapter.setOnItemLongClickListener(itemFriendBinding -> {
Toast.makeText(this, "您长按了:" + itemFriendBinding.getFriendInfo().getName(),
Toast.LENGTH_SHORT).show();
});
mSingelTypeAdapter.setOnClickListener((view, itemFriendBinding) ->
Toast.makeText(this, "您点击了:" + itemFriendBinding.getFriendInfo().getName()
+ "的头像", Toast.LENGTH_SHORT).show()
);
mSingelTypeAdapter.setOnLongClickListener((view, itemFriendBinding) ->
Toast.makeText(this, "您长按了:" + itemFriendBinding.getFriendInfo().getName()
+ "的头像", Toast.LENGTH_SHORT).show()
);
4、为RecyclerView设置Adapter
mRecyclerView.setAdapter(mSingelTypeAdapter);
5、刷新或写入数据
mSingelTypeAdapter.refresh(mFriendInfos);
mSingelTypeAdapter.add(mFriendInfos);
网友评论