Android通过泛型简化findViewById类型转换

以前老用findViewById,每次使用还得add cast一下今天看到一个视频(根据视频中使用的IDE推断,应该是几年前的视频了..),使用了一个方法,可以不用每次使用findViewById都去add cast.

我根据视频中的写法进行优化,具体做法:

创建一个BaseActivity,让它继承Activity,在其中添加如下方法:

//         因为是findView所以泛型类型应该继承View
	protected <T extends View> T genericFindViewById(int id) {
		//return返回view时,加上泛型T
		return (T) findViewById(id);
	}

之后将所用到的Activity都继承BaseACtivity,然后直接使用genericFindViewById来代替findViewById即可.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 08:03:55

Android通过泛型简化findViewById类型转换的相关文章

android ButterKnife 解决重复findViewById

简介: 程序员都是懒惰的,不想写一大堆像下面这样的代码 class ExampleActivity extends Activity { TextView title; TextView subtitle; TextView footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_ac

泛型和强制类型转换

[泛型和强制类型转换] 编译器允许您将一般类型参数显式强制转换到其他任何接口,但不能将其转换到类: 但是,您可以使用临时的 Object 变量,将一般类型参数强制转换到其他任何类型: 不用说,这样的显式强制类型转换是危险的,因为如果为取代一般类型参数而使用的类型实参不是派生自您要显式强制转换到的类型,则可能在运行时引发异常.要想不冒引发强制类型转换异常的危险,一种更好的办法是使用 is 和 as 运算符,如代码块 6 所示.如果一般类型参数的类型是所查询的类型,则 is 运算符返回 true:如

(转)通过泛型来简化findViewById

原文: http://www.stormzhang.com/android/androidtips/2014/08/24/android-viewfinder/ 在Android获取一个View一般都是通过如下方式: TextView textView = (TextView) findViewById(R.id.textview); 相信大家都写过无数次findViewById了吧,每次都要Cast一下是否很不爽啊.今天就来介绍三种简便的方法避免这种Cast 第一种 在项目基类BaseActi

android 使用泛型再也不写findViewById方法了

我们在开发中肯定会findViewById寻找view,如果一个界面上有很多view需要绑定click事件,那么findViewById就是个体力活了,那我们就想能不能有一种办法能不能不必要每次去findViewById呢?只要你去想,说明你就意识到这个问题,剩下来就是想办法如何解决了,这个问题也不能,如果熟悉javase中的泛型,就会很简单的解决,代码入下 public <T> T $(int viewID) { return (T)findViewById(viewID); } 我们只要在

通过泛型来简化findViewById

我们一般写findViewById都要加个强制转换,感觉很麻烦,现在你可以在你的BaseActivity中写入如下方法: @SuppressWarnings(“unchecked”) public final <E extends View> E getView (int id) { try { return (E) findViewById(id); } catch (ClassCastException ex) { Log.e(TAG, “Could not cast View to co

Kotlin的android扩展:对findViewById说再见(KAD 04)

作者:Antonio Leiva 时间:Dec 12, 2016 原文链接:http://antonioleiva.com/kotlin-android-extensions/ 你也许已厌倦日复一日使用findViewById编写Android视图.或是你可能放弃它转而使用著名的Butterknife库.那么你将会喜爱Kotlin的Android扩展. Kotlin的Android扩展 Kotlin的Android扩展是Kotlin插件的正规插件之一,它无缝覆盖Activities的视图,Fra

android自定义Application全局变量不能类型转换的问题

今天弄了个全局变量AppContext ,但一直出现如下错误,原来继承 Application的得在清单文件声明. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.langteng.shiliao/com.langteng.shiliao.activity.MainActivity}: java.lang.ClassCastException: android.app.Application canno

Android版本:使用findViewById()用字符串/在一个循环

我在做一个Android应用程序,其中有一个数百按钮,每一个特定的回调.现在,我想设置,而不必写几百行代码(用于按钮各一个)这一个循环. 我的问题是:如何才能findViewById不具有静态在键入每个按钮的id? 以下是我想要做的: for(int i=0; i<some_value; i++) { for(int j=0; j<some_other_value; j++) { String buttonID = "btn" + i + "-" + j

Android MVP + 泛型,实现了友好VP交互及Activity潜在的内存泄露的优化

Android MVP粗来已经有段时间了,在项目中我也多多少少用了一些,不得不说代码使用这种模式后,条例确实清晰了好多,整个流程看起来有点各司其职的感觉(另一种的java面向对象的方式). 不过这里是我在使用过程中遇到的一点小优化,直接进入代码来说吧!!! 1 import java.lang.ref.Reference; 2 import java.lang.ref.WeakReference; 3 4 public class Presenter <T>{ 5 6 private Refe