recycleView之 databinding简单利用
来源:互联网 发布:小榕软件 编辑:程序博客网 时间:2024/06/03 17:45
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <import type="android.view.View"/> <variable name="custom" type="com.example.administrator.eitherdemo1.CustomScanActivity"/> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:gravity="center_horizontal" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/fifty" android:orientation="horizontal" > <Button android:id="@+id/btn" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:onClick="start" android:text="@string/add1" /> <Button android:id="@+id/btn1" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:onClick="start1" android:text="@string/add2" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler" android:background="@color/white" /> </LinearLayout></layout>
mainActivity的代码
public class MainActivity extends BaseActivity { ActivityMainBinding mainBinding ; List<User> users = new ArrayList<User>(); List<User> us = new ArrayList<>(); FriendAdapter adapter ; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main); adapter = new FriendAdapter(this,users); mainBinding.recycler.setLayoutManager(new LinearLayoutManager(this)); mainBinding.recycler.setAdapter(adapter); adapter.setOnItemClickLitener(new FriendAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { Toast.makeText(MainActivity.this,"点击当前第"+position+"个条目",Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClick(View view, int position) { } }); } public void start(View view){// customScan(); User user = new User("小明","12","nan"); adapter.addItem(0,user); us.add(user); } public void start1(View view){ User user = new User("小红","16","nv"); adapter.addItem(0,user); us.add(user); } }
3 adpter 中需要注意的
3.1 所有类型的item的父类:
public abstract class BaseRecyclerViewHolder<T> extends RecyclerView.ViewHolder { public BaseRecyclerViewHolder(View itemView) { super(itemView); } public abstract void bindData(T data);}
3.2 adapter:
思路: 创建两个databinding类型的xml文件作为item各种类型的布局;
创建两个继承了BaseRecyclerViewHolder的类,相关写法已经展示;
在OnCreateViewHolder()中返回BaseRecyclerViewHolder;
public class FriendAdapter extends RecyclerView.Adapter<BaseRecyclerViewHolder> { private List<User> strings; private Context mcontext; public FriendAdapter(Context context, List<User> strings) { this.mcontext = context; this.strings = strings; } @Override public BaseRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType){ case 1: ItemRecycleBinding recycleBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),R.layout.item_recycle,parent,false); return new MyViewHolder(recycleBinding); case 2: ItemnvBinding itemnvBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),R.layout.itemnv,parent,false); return new NvViewHolder(itemnvBinding); } return null; } @Override public void onBindViewHolder(final BaseRecyclerViewHolder holder, int position) { holder.bindData(strings.get(position)); if (mOnItemClickLitener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemClick(holder.itemView, pos); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemLongClick(holder.itemView, pos); return false; } }); } } public interface OnItemClickLitener { void onItemClick(View view, int position); void onItemLongClick(View view, int position); } private OnItemClickLitener mOnItemClickLitener; public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) { this.mOnItemClickLitener = mOnItemClickLitener; } @Override public int getItemCount() { return strings.size(); } public class MyViewHolder extends BaseRecyclerViewHolder<User> { ItemRecycleBinding recycleBinding; public MyViewHolder(ViewDataBinding dataBinding) { super(dataBinding.getRoot()); recycleBinding = (ItemRecycleBinding) dataBinding; } @Override public void bindData(User data) { recycleBinding.setUser(data); } } public class NvViewHolder extends BaseRecyclerViewHolder<User>{ ItemnvBinding itemnvBinding; public NvViewHolder(ViewDataBinding viewDataBinding) { super(viewDataBinding.getRoot()); itemnvBinding = (ItemnvBinding) viewDataBinding; } @Override public void bindData(User data) { itemnvBinding.setUser(data); } } @Override public int getItemViewType(int position) { String sex = strings.get(position).getSex(); if ("nan".equals(sex)) { return 1; } else { return 2; } } public void addItem(int position,User s) { strings.add(position,s); notifyItemInserted(position); } public void removeItem(int position) { strings.remove(position); notifyItemRemoved(position); }}
3.3 item的简单布局文件:
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.example.administrator.eitherdemo1.bean.User"/> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/fifty" android:orientation="horizontal"> <TextView android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="@string/sex" /> <TextView android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:id="@+id/textname" android:text="@{user.name}" /> </LinearLayout></layout>
两个xml文件一样,不一样的知识内容String。
写的挺垃圾,但是几次过后可以直接复制并做略微修改使用了。
0 0
- recycleView之 databinding简单利用
- RecycleView利用
- Android 开发之RecycleView的简单使用
- RecycleView在DataBinding上的通用Adapter
- MVP结合RecycleView,利用retrofit与RxJava简单请求数据
- Android之MVVM开发模式和DataBinding的简单用法
- Android设计模式MVVM之DataBinding简单使用
- DataBinding简单操作
- DataBinding的简单使用
- DataBinding简单使用
- 简单使用DataBinding
- Android Databinding简单使用
- DataBinding的简单使用
- Android学习之路----RecycleView的简单实用
- Android之---RecycleView简单介绍(各种用法的简介)
- Android databinding RecycleView item 子控件点击事件
- android databinding实践之:databinding 注解
- RecycleView简单介绍
- Java中常用的解析Excel文件的库
- CSS定位实践
- Android性能之多线程篇
- Activity的生命周期
- SCU4436-Easy Math
- recycleView之 databinding简单利用
- 萤石云初始化爬坑2——摄像头预览
- 阿里巴巴2017实习生招聘笔试题
- 刷题总结#16
- vim中ctags、cscope安装及使用
- EditText的password属性值(隐藏密码**)
- eclipse打开文件位置插件
- jmeter邮件观察仪
- Android Studio 显示函数用法提示悬浮窗,解决fetching documentation问题