曾经老用findViewById,每次使用还得add cast一下今天看到一个视频(依据视频中使用的IDE判断,应该是几年前的视频了..),使用了一个方法,能够不用每次使用findViewById都去add cast. 我依据视频中的写法进行优化,详细做法: 创建一个BaseActivity,让它继承Activity,在当中加入例如以下方法: // 由于是findView所以泛型类型应该继承View protected <T extends View> T genericFindViewByI…
简介: 程序员都是懒惰的,不想写一大堆像下面这样的代码 class ExampleActivity extends Activity { TextView title; TextView subtitle; TextView footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_ac…
泛型简化代码量 下是我在项目中通过泛型来简化工作的一个Demo,记录一下: using System; using System.Collections.Generic;   namespace MyCollection { public class CBase { private string id = "CBase"; public virtual string Id { get { return id; } set { id = value; } } }   public cla…
我们一般写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…
局部类型转换文件 局部类型转换文件的文件名应为 ActionName-conversion.properties,其中 ActionName 是需要替换为 Action 的类名称,后面的 conversion.properties 字符串则是固定部分,类型转换文件应该放在和Action类文件相同的位置. 为了指定非泛型集合元素的数据类型,需要指定二个部分:集合属性的名称.集合元素类型,在局部类型转换文件中指定如下key-value对即可: List 类型: Element_PropName=El…
一.Golang环境安装及配置Go Module https://go-zero.dev/cn/docs/prepare/golang-install mac OS安装Go# 下载并安装Go for Mac 验证安装结果 $ go version go version go1.15.1 darwin/amd64 linux 安装Go# 下载Go for Linux 解压压缩包至/usr/local $ tar -C /usr/local -xzf go1.15.8.linux-amd64.tar…
作者:Antonio Leiva 时间:Dec 12, 2016 原文链接:http://antonioleiva.com/kotlin-android-extensions/ 你也许已厌倦日复一日使用findViewById编写Android视图.或是你可能放弃它转而使用著名的Butterknife库.那么你将会喜爱Kotlin的Android扩展. Kotlin的Android扩展 Kotlin的Android扩展是Kotlin插件的正规插件之一,它无缝覆盖Activities的视图,Fra…
Android MVP粗来已经有段时间了,在项目中我也多多少少用了一些,不得不说代码使用这种模式后,条例确实清晰了好多,整个流程看起来有点各司其职的感觉(另一种的java面向对象的方式). 不过这里是我在使用过程中遇到的一点小优化,直接进入代码来说吧!!! import java.lang.ref.Reference; import java.lang.ref.WeakReference; public class Presenter <T>{ private Reference<T&g…
网上说的都是在super(context, attrs);构造函数这里少加了一个字段, 其实根本不只这一个原因,属于view生命周期的应该知道,如果你在 自定义view的构造函数里面调用findViewById 铁定为空的,因为这个 时候view还在初始化阶段,还没有添加到activity的XML布局上,所以 你怎么调用都是没用的,解决办法就是把我们的findViewById方法换 一个生命周期上面调用就OK了,比如我就是在 protected void onAttachedToWindow()…
public class NActivity extends Activity{ protected void onCreate(Bundle savedInstanceState){ setContentView(R.layout.activity_main); Button button=getInstances(R.id.button1); Button button2=getInstances(R.id.button2); TextView tv1=getInstances(R.id.t…
@SuppressWarnings("unchecked") public <T extends Fragment> T getFragment(int id) { T result = (T)getFragmentManager().findFragmentById(id); if (result == null) { throw new IllegalArgumentException("fragment 0x" + Integer.toHexStr…
C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性.类型安全和可扩展性. 在C++中经常会使用到snprintf来格式化一些输出.为了正确地完成这个任务,必须确保证目标缓冲区有足够大空间以容纳转换完的字符串.此外,还必须使用正确的格式化符.如果使用了不正确的格式化符,会导致非预知的后果. 1. snprintf需要注意buff的大小,以及对返回值的判断. #include <stdio.h> int main(){ ch…
android使用泛型的地方很多,比如集成自BaseAdapter实现封装的Adapter,对常用操作进行封装,但是需要对传进来的数据进行处理,此时就使用到泛型,示例如下: public abstract class EasyAdapter<T> extends BaseAdapter { private LayoutInflater inflater; private int layoutId; private List<T> mlist = new ArrayList<T…
在Activity中,可以直接用findViewById(int id),通过xml的id来找到对应的View. 查找官方的api,具体如下: https://developer.android.google.cn/reference/android/app/Activity.html#findViewById(int) 而在Fragment中,直接使用会报错如下: The method findViewById(int) is undefined for the type Fragment 可…
butterknife库非常不错的依赖注入库 使用1  使用2 http://jakewharton.github.io/butterknife/ maven引入 http://www.mvnrepository.com/artifact/com.jakewharton/butterknife/7.0.1 <dependency> <groupId>com.jakewharton</groupId> <artifactId>butterknife</a…
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上,一直没有看到支持Java8的消息.Android到底会不会支持Java8呢?答案是肯定的,Android N已经开始支持Java 8 了. 关于Java 8 (1.)使用Lambda表达式 Java 8的一大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.当开发者在编写Lambda表达式时…
配置 compile 'com.jakewharton:butterknife:(insert latest version)' annotationProcessor 'com.jakewharton:butterknife-compiler:(insert latest version)' 使用 Android 开发过程中,我们需要写大量的findViewById()和setonclicktListener()等事件, 那么现在有一个框架可以很好的解决这个问题 ---- BufferKnif…
写给Android开发者的Kotlin入门 转 https://www.jianshu.com/p/bb53cba6c8f4 Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿Android的人,我们必须尽快了解和使用Kotlin语言. 不过Kotlin毕竟是语言级别的新事物,比起Java来说,从编程思想到代码细节都有不少变化,我们最好先对Kotlin有个整体的基本的了解,然后再去学习和使用,这样才能高效地掌握Kotlin语言. Jav…
备注 原发表于2016.05.08,资料已过时,仅作备份,谨慎参考 前言 自上星期写 Retrofit 写吐之后 ... 我问大队长能不能换个其他什么东西写,大队长就说了个单词 ButterKnife,这个我知道,是黄油刀的意思,然后看到是减轻工作量的框架我就开心了,还在为 findViewById() 烦恼吗? ButterKnife 概要 简介 ButterKnife 是一个 Android 系统的 View 注入框架,能够通过『注解』的方式来绑定 View 的属性或方法. 比如使用它能够减…
转载:http://blog.csdn.net/huachao1001/article/details/53156582 在10月份开始就没有再参与校招了,面试过程真的很累,有时现场等面试一等就是几个小时.加上毕业论文开题的压力,所以没有继续参加各个公司笔面试了.过去几个月中,复习时也曾经到处搜资料.搜真题.毕竟从小到大考试都是有教科书复习,有老师划重点.现在找工作都没有这些,只有靠自己.所以特别理解准备找工作的小伙伴们空有好好复习的决心,花了很多时间却没有复习多少知识,因为在搜资料过程需要很多…
摘要:本文讨论泛型处理的问题空间.它们的实现方式.该编程模型的好处,以及独特的创新(例如,约束.一般方法和委托以及一般继承).此外,本文还讨论 .NET Framework 如何利用泛型. 下载 GenericsInCSharp.msi 示例文件. 注 本文假定读者熟悉 C# 1.1.有关 C# 语言的详细信息,请访问 http://msdn.microsoft.com/vcsharp/language. 本页内容 简介 泛型问题陈述 什么是泛型 应用泛型 一般约束 泛型和强制类型转换 继承和泛…
介绍 ButterKnife通过@InjectView和视图的ID注解的变量去找到并自动转换为你布局上相应的布局视图. class ExampleActivity extends Activity {   @InjectView(R.id.title) TextView title;   @InjectView(R.id.subtitle) TextView subtitle;   @InjectView(R.id.footer) TextView footer; @Override publi…
1 泛型赋予了类型參数式多态的能力 2 泛型的第一个优点是编译时的严格类型检查,提高了程序的安全性和健壮性,这是集合框架最重要的特点. 3 泛型消除了绝大多数的类型转换.假设没有泛型,当你使用集合框架时,你不得不进行类型转换. 4 泛型简化了代码,应用泛型的程序提高程序的可读性,更利于团队的合作开发.…
原文:https://developer.android.com/training/testing/index.html 测试你的App是开发过程中的重要组成部分.通过对应用程序持续的运行测试,你可以验证程序的正确性.功能和可用在发布之前. 测试还提供了以下优点: 快速反馈失败. 开发周期的早期问题检测. 安全地重构代码,让你优化代码而不用担心回归. 稳定开发速度,帮助你减少技术债务. 这里的特指测试通过代码实现的"单元"测试.所以,它可以更早.更快的帮我们发现问题,使我们的代码重构更…
2018年3月8日,Google推出了Android P Preview版本,并提供官方镜像下载. 为了让广大开发者能够及时了解Android P的新功能特性,提前为您的app进行良好适配,WeTest决定限时免费开放Android P Preview版本的远程调试及标准兼容功能,供开发者进行体验. 即日起,针对WeTest平台的Android P.Android Oreo专区,个人认证用户可免费获得30分钟/天远程调试.3次/天标准兼容测试额度:企业账户可获得60分钟/天远程调试.6次/天标准…
2018年3月8日,Google推出了Android P Preview版本,并提供官方镜像下载. 为了让广大开发者能够及时了解Android P的新功能特性,提前为您的app进行良好适配,WeTest决定限时免费开放Android P Preview版本的远程调试及标准兼容功能,供开发者进行体验. 即日起,针对WeTest平台的Android P.Android Oreo专区,个人认证用户可免费获得30分钟/天远程调试.3次/天标准兼容测试额度:企业账户可获得60分钟/天远程调试.6次/天标准…
越来越多第三方库使用apt技术,如DBflow.Dagger2.ButterKnife.ActivityRouter.AptPreferences.在编译时根据Annotation生成了相关的代码,非常高大上但是也非常简单的技术,可以给开发带来了很大的便利. Annotation 如果想学习APT,那么就必须先了解Annotation的基础,这里附加我另外一篇文章的地址: Java Annotation 基础教程 APT APT(Annotation Processing Tool)是一种处理注…
原文:https://developer.android.com/training/testing/index.html 测试你的App是开发过程中的重要组成部分.通过对应用程序持续的运行测试,你可以验证程序的正确性.功能和可用在发布之前. 测试还提供了以下优点: 快速反馈失败. 开发周期的早期问题检测. 安全地重构代码,让你优化代码而不用担心回归. 稳定开发速度,帮助你减少技术债务. 这里的特指测试通过代码实现的"单元"测试.所以,它可以更早.更快的帮我们发现问题,使我们的代码重构更…
这篇文章主要是写关于Android实现地址三联动的功能,现在附上demo地址:https://github.com/qiuyueL/NewAddressDemo,里面会有详细的注释,以及控件的使用,其中还包括了一个PopupWindow的封装.先简单说一下PopupWindow的封装以及使用. 首先,先搭建一个PopupWindow视图的实现类,主要是实现一个通过泛型获取findViewById资源文件,直接通过ID来操作其中的事件方法,可以省略一个ID的注册步骤,先上一个跟目标demo相关的部…
Android中能够简化开发流程的一些框架 本文介绍的是一些博主在开发过程中经常用到的Android开源框架,所谓开源框架我的理解就是别人封装好的代码,可以直接拿过来使用,并且源码也全部公开的代码库. 我对于开源框架的使用的态度是,如果完全符合我们项目的需求,或者可定制化的程度非常高的话,那么便可以拿过来直接用,因为开源框架的源码都在那里,如果遇到和项目预期不一样的地方我们也可以把源码拿过来自己改一下,然后重新打个包嘛. 但是,不是很建议刚开始学习安卓的小伙伴们,只会用第三方框架,但是不理解框架…