还有一点,大年夜家可自行根据项目进行拓展封装类。
下面为大年夜家附上具体俩种方法调用以及运行结不雅:
方法一 调用方法:
运行结不雅:

方法二 调用方法:
- TextView textView= FindView.with(this).getView(R.id.id_test);
- textView.setText("你好");
运行结不雅:

经由过程泛型来简化findViewById
一般来说我们会在BaseActivity中定义一个泛型获取View实例办法,如下:
- public final <E extends View> E getView(int id) {
- try {
- return (E) findViewById(id);
- } catch (ClassCastException ex) {
- Log.e("HLQ_Struggle", "Could not cast View to concrete class." + ex);
- throw ex;
- }
- }
调用很简单,如下:
- TextView textView = getView(R.id.id_test);
- textView.setText("你在干嘛");
这个结不雅就不必说了吧?
采取泛型办法为公共类
方才在网上搜刮,忽然看到有一哥儿们经由其师长教师启发,小我封装了一个,LZ看到感到不错,先尝尝看看好不好用。
这里和上一个办法类型,然则上一个办法或有一些缺点就是,我在非Activtiy中调用怎么办呢?难不成要在各个Base中都要Copy一次?小我感到不是很如意。
- /**
- * 获取控件实例
- * @param view
- * @param viewId
- * @param <T>
- * @return View
- */
- public static <T extends View> T viewById(View view, int viewId) {
- return (T) view.findViewById(viewId);
- }
如许一来,调用就有点恶心了,如下:
在Activitiy中调用方法如下:
- TextView textView = UIHelper.viewById(selfActivity.getWindow().getDecorView(), R.id.id_test);
Fragment中调用如下:
- TextView textView= UIHelper.viewById(getActivity().getWindow().getDecorView(), R.id.id_test);
推荐阅读
产学研一体化,催生聪明应用模式 “郑州大年夜六、七年前就开端做数字城市,然则它的数据信息是静止的,二维的。和数字城市比拟,聪明城市请求是可测量、可感知、可分析、可视化的,也>>>详细阅读
本文标题:Android Study之findViewById变迁之路
地址:http://www.17bianji.com/lsqh/35987.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示