简化findViewById()

2016-07-12  本文已影响0人  娜就是我_kn

         对于findViewById()这个方法相信每个Android开发工程师都很熟悉,没有技术含量,但又必不可少。在开发过程中大量的findViewById()让工程师们烦不胜烦,为了减少一些代码,该文运用Java的泛型简化这个方法。

public static T findView(Activity context, int id) {

                                try {

                                                  return (T) context.findViewById(id);

                                        } catch (ClassCastException ex) {

                                                    Log.e("", "Could not cast View to concrete class.", ex);

                                                      throw ex;

                                       }

                 }

这个方法的使用场景是在Activity中,这个方法可以写在BaseActivity中,然后每个Activity继承自BaseActivity,这样在绑定控件的时候直接用这个方法代替findViewById(),减少繁琐的类型转换。

public static T findView(View rootView, int id) {

                          try {

                                       return (T) rootView.findViewById(id);

                                   } catch (ClassCastException ex) {

                                          Log.e("", "Could not cast View to concrete class.", ex);

                                           throw ex;

                                 }

  }

这个方法的使用场景是非Activity,当需要有一个根View的时候调用此方法来代替findViewById()。

    当然还有很多方式可以减少findViewById()的书写,例如注解,Android Studio插件Android Butterknife Zelezny等等,这些方式各有利弊,读者可自行选择。特别提示:使用注解会影响性能。详情请自行查阅。

上一篇下一篇

猜你喜欢

热点阅读