MVVM的简单使用流程
来源:互联网 发布:usb转网络接口装驱动 编辑:程序博客网 时间:2024/05/22 13:59
简介
- 描述使用MVVM
- 简单使用
- 代码展示
- 总结
简单介绍:
好久没和大家分享文章了,今天和大家分享一下MVVM框架的简单使用,以前都是用的MVP模式写的代码,刚接触MVVM有点晕,其实用的一段感觉挺好用的,最实用的我感觉就是不用我们去找控件的ID,也解决了我们程序员最为烦恼的命名问题,我们XML直接针对的是Bean对象所以控件就不用给ID直接可以调用。别的不多说了直接上代码。
RexecyclerView列表代码展示
- 步骤一
首先我们先导入依赖在APP的build.gradle里面添加以下依赖
dataBinding {
enabled = true
}
定义XML
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" > <LinearLayout style="@style/all_layout" > <android.support.v7.widget.RecyclerView android:id="@+id/findHrecycler" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout></layout>
- 讲解
我们可以看出上面我们在定义XML里面就和我们以往写的不一样,他是最外层包了一个标签我们通过这个标签就可以去在view层(Activity、fragment)里面调用dataBindingUtil来指定布局并且返回当前主页面的布局,在通过他就可以找到控件;然后我们看下bean对象。
public class FindBean { private String name; private String tuurl; public FindBean(String name, String tuurl) { this.name = name; this.tuurl = tuurl; } public FindBean() { super(); } public void setName(String name) { this.name = name; } public void setTuurl(String tuurl) { this.tuurl = tuurl; } public String getName() { return name; } public String getTuurl() { return tuurl; }}
- 简单的bean对象和我们以前写的一样
我们在看下适配器
public class FindAdapter extends RecyclerView.Adapter<BindingViewHolder>{ private Context mContext; private OnItemClickListener mOnItemClickListener; private LayoutInflater mLayoutInflater; private List<FindBean> mBeanList; public interface OnItemClickListener{ void OnMyBeanClick(FindBean findBean); } public FindAdapter(Context context) { mContext = context; mLayoutInflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mBeanList=new ArrayList<>(); } @Override public BindingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewDataBinding binding= DataBindingUtil.inflate(mLayoutInflater, R.layout.item_find,parent,false); return new BindingViewHolder(binding); } @Override public void onBindViewHolder(BindingViewHolder holder, int position) { final FindBean findBean = mBeanList.get(position); holder.getBinding().setVariable(BR.bean,findBean); holder.getBinding().executePendingBindings();// 设置条目点击事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.OnMyBeanClick(findBean); } } }); } @Override public int getItemCount() { return mBeanList.size(); } public void setonListener(OnItemClickListener listener){ mOnItemClickListener=listener; } public void addAll(List<FindBean> finbean){ mBeanList.addAll(finbean); }}
- 还有一个viewholder
public class BindingViewHolder<T extends ViewDataBinding> extends RecyclerView.ViewHolder { private T mbinding; public BindingViewHolder(T binding) { super(binding.getRoot()); mbinding=binding; } public T getBinding(){ return mbinding; }}
- 最后我们在主页面调用
public class FindFragment extends BaseFragment { FragmentFindBinding mBinding; private List<FindBean> mList = new ArrayList<>(); private FindAdapter mFindAdapter; @Override protected ViewDataBinding onCreateContentDataBinding(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) { return mBinding= DataBindingUtil.inflate(layoutInflater, R.layout.fragment_find,viewGroup,false); } @Override protected void initComponents(View createView, Bundle savedInstanceState) { super.initComponents(createView, savedInstanceState); mBinding.findHrecycler.setLayoutManager(new LinearLayoutManager(getActivity())); mFindAdapter = new FindAdapter(getActivity()); mBinding.findHrecycler.setAdapter(mFindAdapter); mFindAdapter.setonListener(new FindAdapter.OnItemClickListener() { @Override public void OnMyBeanClick(FindBean findBean) { Toast.makeText(getActivity(),""+findBean.getName(),Toast.LENGTH_SHORT).show(); } }); initdate(); } private void initdate() { mList.add(new FindBean("测试数据","")); mList.add(new FindBean("测试数据","")); mList.add(new FindBean("测试数据","")); mList.add(new FindBean("测试数据","")); mFindAdapter.addAll(mList); }}
- Item的布局
细心的朋友可以看到我的textview是没有给他设置ID的但是我在数据显示的时候就通过findbean类就可以给textview进行赋值。
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" > <data> <variable name="bean" type="com.aioas.jieqianbao.find.bean.FindBean"/> </data><com.zhy.autolayout.AutoLinearLayout android:layout_width="match_parent" android:background="@drawable/shadow_bg" android:orientation="vertical" android:layout_height="wrap_content"> <ImageView android:id="@+id/img_find" android:background="@drawable/guide_3" android:layout_width="match_parent" android:layout_height="245px"/><com.zhy.autolayout.AutoLinearLayout android:layout_marginTop="30px" android:layout_marginBottom="30px" android:layout_width="match_parent" android:layout_height="wrap_content"><TextView android:paddingLeft="30px" android:textSize="30px" android:textColor="@color/text_san" android:text="@{bean.name}" android:layout_width="wrap_content" android:layout_height="wrap_content"/></com.zhy.autolayout.AutoLinearLayout></com.zhy.autolayout.AutoLinearLayout></layout>
- 总结
相信大家看了我的帖子会有点蒙,就是我们适配器里面就指定好对应的layout即可,然后我们Item里面控件是通过标签下面的 标签下面标签指定好的bean类的路径直接交互。就可以实现简单的数据展示。
阅读全文
0 0
- MVVM的简单使用流程
- MVVM的简单使用
- MVVM的简单使用
- MVVM架构简单使用
- MVVM架构简单使用
- MVVM:MVVM架构的简单解析
- MVVM+RAC简单使用教程
- WPF中使用MVVM创建一个简单的框架
- 使用MVVM构建一个简单的WPF应用
- MVVM 的使用
- MVVM模式的使用
- MVVM架构的简单解析
- MVVM架构的简单理解
- MVVM模式的简单案例
- wp8使用mvvm模式简单例子
- MVVM Light Messenger的使用
- MVVM的使用和原理
- mvvm command的使用案例
- What's new in iOS11?
- 51nod 1067 bash游戏V2
- [Python] 爬绿盟官网漏洞列表并存储MySQL与邮件通知
- 使用rbenv进行Ruby on Rails 环境搭建@CentOS 7-1-Ruby环境搭建
- Effective Java中文第三章第11节(个人渣翻)
- MVVM的简单使用流程
- 逻辑思维
- linux 安装部署多个tomcat
- org.apache.cxf.interceptor.Fault: Unmarshalling Error: 意外的元素 (uri:"", local:"action")
- [科普]DNS预解析/dns-prefetch是什么?怎么开启?
- getopt optarg
- Android 4.4.2引入的超炫动画库
- ACM-ICPC北京赛区网络赛2017-minimum(线段树)
- Tesseract-OCR学习系列(三)简例