作家
登录

Android Study之findViewById变迁之路

作者: 来源: 2017-07-03 10:58:57 阅读 我要评论

还有一点,大年夜家可自行根据项目进行拓展封装类。

下面为大年夜家附上具体俩种方法调用以及运行结不雅:

方法一 调用方法:

运行结不雅:

方法二 调用方法:

  1. TextView textView= FindView.with(this).getView(R.id.id_test); 
  2. textView.setText("你好");  

运行结不雅:

经由过程泛型来简化findViewById

一般来说我们会在BaseActivity中定义一个泛型获取View实例办法,如下:

  1. public final <E extends View> E getView(int id) {         
  2.     try {             
  3.         return (E) findViewById(id); 
  4.         } catch (ClassCastException ex) { 
  5.             Log.e("HLQ_Struggle""Could not cast View to concrete class." + ex);             
  6.     throw ex; 
  7.         } 
  8.     }  

调用很简单,如下:

  1. TextView textView = getView(R.id.id_test); 
  2. textView.setText("你在干嘛");  

这个结不雅就不必说了吧?

采取泛型办法为公共类

方才在网上搜刮,忽然看到有一哥儿们经由其师长教师启发,小我封装了一个,LZ看到感到不错,先尝尝看看好不好用。

这里和上一个办法类型,然则上一个办法或有一些缺点就是,我在非Activtiy中调用怎么办呢?难不成要在各个Base中都要Copy一次?小我感到不是很如意。

  1. /** 
  2.      * 获取控件实例 
  3.      * @param view 
  4.      * @param viewId 
  5.      * @param <T> 
  6.      * @return View 
  7.      */ 
  8.     public static <T extends View> T viewById(View viewint viewId) {         
  9.         return (T) view.findViewById(viewId); 
  10.     }  

如许一来,调用就有点恶心了,如下:

在Activitiy中调用方法如下:

  1. TextView textView = UIHelper.viewById(selfActivity.getWindow().getDecorView(), R.id.id_test); 

Fragment中调用如下:

  1. TextView textView= UIHelper.viewById(getActivity().getWindow().getDecorView(), R.id.id_test); 

      推荐阅读

      郑州,为智慧城市升级提供模板

    产学研一体化,催生聪明应用模式 &ldquo;郑州大年夜六、七年前就开端做数字城市,然则它的数据信息是静止的,二维的。和数字城市比拟,聪明城市请求是可测量、可感知、可分析、可视化的,也>>>详细阅读


    本文标题:Android Study之findViewById变迁之路

    地址:http://www.17bianji.com/lsqh/35987.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)