View-Layout注入框架--简洁视图注入

简介: 框架开发前在没有这套框架之前,我们在activity、fragment、自定义view、listview的viewholder甚至你能想的更多。大概是这样://activity protected void onCreate(Bundle savedInstanceState) { super.

框架开发前

在没有这套框架之前,我们在activity、fragment、自定义view、listview的viewholder甚至你能想的更多。
大概是这样:

//activity
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
}
//fragment
public static class ExampleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.example_fragment, container, false);
    }
}
//view
 View.inflate(R.layout.example_fragment ,null, false);
//viewholder
public View getView(int position, View convertView, ViewGroup parent) {  
            ViewHolder holder = new ViewHolder();  
            if(convertView==null){  
                convertView = inflater.inflate(R.layout.good_list_item, null, false);  
                holder.img = (ImageView) convertView.findViewById(R.id.img);  
                convertView.setTag(holder);  
            }else{  
                holder = (ViewHolder) convertView.getTag();  
            }  
            //设置holder  
            holder.img.setImageResource(R.drawable.ic_launcher);  

              
            return convertView;  
}  
//recycleView.viewholder
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        return new ItemViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_test, parent, false));
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
    }

    class ItemViewHolder extends ViewHolder {

        public ItemViewHolder(View itemView) {
            super(itemView);
        }
    }

以上不是一次友好的教学,也许你还在那样写,但是我拒绝。也许你可能看出了其中的问题,没错,代码风格不统一,接口不友好,view和逻辑没有分割违反了单一原则!

使用View-Layout

下面是采用View-Layout注入框架之后的规范代码:

//activity
@BindLayout(R.layout.activity_setting)
public class SettingActivity extends BaseTitleActivity {

}

/**
 * @author GanQuan
 * @since 2018/3/21.
 */
//fragment
@BindLayout(R.layout.activity_layout_main_home)
public class HomeTabFragment extends BaseTitleFragment {

}

//view
@BindLayout(R.layout.layout_main_item_header_login)
public class ReportProducedSucView extends BaseItemViewWithBean<HomeModule.HeaderBean> implements IHomeHeader {

}

//listview#viewholder or recycleView#viewholder(统一的风格)
  @BindLayout(R.layout.credit_detail_item_layout_overdue)
        static class ItemViewHolder extends BaseViewHolder<OverdueInfoBean.DetailsBean> {

}

所有view层接口代码都是通过依赖注入的方式去获取。
1.便于用户后期的查找xml;
2.代码更干净
3.弱化了视图和逻辑的交互,更好的提现的单一职责。

这一切都归功于View-Layout注入框架,它将视图层各种使用的场景处理和分发。统一了view层获取xml绑定的步骤,并且强制分割了view和model,自定义view可以跟卡片一样去管理。

原理和设计

//todo

目录
相关文章
|
5月前
|
XML 前端开发 Java
SpringMVC常见组件之View分析
SpringMVC常见组件之View分析
51 0
|
9月前
|
Python
DRF--view
DRF--view
|
Android开发
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )
【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )
221 0
|
Android开发
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )(二)
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )(二)
101 0
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )(二)
|
Java Android开发
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )(一)
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )(一)
100 0
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )(一)
|
Java API Android开发
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(一)
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(一)
266 0
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(一)
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(二)
【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )(二)
90 0
|
Android开发
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(二)
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(二)
161 0
|
Java Android开发
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(一)
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(一)
185 0
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(一)
|
前端开发
MVC中Controller与View中间的数据传递的常用方法
原文:MVC中Controller与View中间的数据传递的常用方法 这几天正在学习MVC,顺便就将自己每天的学习心得记录下来与大家分享一下吧! 在MVC中,Controller与View之间传递数据是很频繁的事情,所以在这里就总结一下我自己在学习中使用的几种常用的方法:   将数据从Cont...
1074 0