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

框架开发前

在没有这套框架之前,我们在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值