• ViewUtils模块的使用


    参考一:http://fanli7.net/a/bianchengyuyan/C__/20131102/439000.html

    参考二:http://www.eoeandroid.com/blog-692530-48289.html

    今天在看某android源码时,才头一次发现可以这样使用,SO,参考了两篇解释详细的文章做个记录。

    • ViewUtils模块:

      • android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
      • 新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
      • 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。

      ViewUtils  android中得ioc(控制反轉)框架,可以完全使用注解的方式來完成UI的绑定和事件绑定。簡單的說,ViewUtils的功能就是做這個的,但是可以說,就這麼個功能確是能極大的簡化我們的代碼。

    下面我們看下具體的代碼,順便對比下注解的方式绑定ID和findViewById之間的差別。

     1 @ViewInject(R.id.btn)
     2     private Button btn;
     3     
     4     @ViewInject(R.id.img)
     5     private ImageView img;
     6     
     7     @ViewInject(R.id.list)
     8     private ListView list;
     9     
    10     @Override
    11     protected void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_second);
    14         ViewUtils.inject(this);
    15     }
    ViewUtils
     1     @Override
     2     protected void onCreate(Bundle savedInstanceState) {
     3         super.onCreate(savedInstanceState);
     4         setContentView(R.layout.activity_second);
     5         
     6         btn = (Button) findViewById(R.id.btn);
     7         img = (ImageView) findViewById(R.id.img);
     8         list = (ListView) findViewById(R.id.list);
     9         
    10     }
    Normal

    如果項目中得Activity中的控件相當多,那麼想象一下代碼中累積的那一大坨就真心受不了。通過xUtils的簡單注解,就能輕松擺脫無盡壞味道的代碼。

    注意:在使用注解绑定控件的時候,一定記得在onCreate中調用ViewUtils.inject(this);

    下面我們再對比下Android中事件绑定的區別。

     1     @OnClick({ R.id.btn, R.id.img })
     2     public void clickMethod(View v) {
     3         Toast.makeText(SecondActivity.this, "you clicked button!",
     4                 Toast.LENGTH_SHORT).show();
     5     }
     6 
     7     @OnItemClick(R.id.list)
     8     public void itemClick(AdapterView<?> parent, View view, int position,long id) {
     9         Toast.makeText(SecondActivity.this, "position--->" + position,
    10                 Toast.LENGTH_SHORT).show();
    11     }
    ViewUtils
     1 btn.setOnClickListener(this);
     2         list.setOnItemClickListener(new OnItemClickListener() {
     3             @Override
     4             public void onItemClick(AdapterView<?> parent, View view,
     5                     int position, long id) {
     6                 Toast.makeText(SecondActivity.this, "position--->" + position,
     7                         Toast.LENGTH_SHORT).show();
     8             }
     9         });
    10     @Override
    11     public void onClick(View v) {
    12         switch (v.getId()) {
    13         case R.id.btn:
    14             Toast.makeText(SecondActivity.this, "you clicked button!",
    15                     Toast.LENGTH_SHORT).show();
    16             break;
    17         default:
    18             break;
    19         }
    20     }
    Normal

    原本绑定Button的監聽事件要麼用醜陋的內部類,要麼Activity實現OnClickListener,在复寫的onClick方法中去根據id。而xUtils只要通過簡單的一句注解就能實現監聽事件的功能,而且可以實現多個控件共用一個監聽方法。同時xUtils提供onClick、onItemClick、onLongClick等15種事件監聽注解。

    注意:在使用注解監聽事件的時候,監聽方法名是自定義的,但是一定要保證方法的訪問修飾符为public,同時方法的参數要與Android原來的監聽方法参數一致,不僅参數類型,而且要保證参數的順序。

  • 相关阅读:
    VS2010程序打包
    Extjs布局
    Extjs4.x完美treepanel checkbox无限级选中与取消
    extjs 4.2 日期控件 选择时分秒功能
    extjs4.0下的日期控件的星期显示为y的解决办法
    linux下mysql 配置
    坐标轴笔记
    cpp 内嵌函数(lambda,struct)
    ue4 笔记
    ue4 蓝图方法备份
  • 原文地址:https://www.cnblogs.com/Miami/p/4140901.html
Copyright © 2020-2023  润新知