xUtils,butterknife...处理findviewbyid
在写android中,经常要出现大量的findviewbyid
et_path = (EditText) findViewById(R.id.et_path);
tv_info = (TextView) findViewById(R.id.tv_info);
在这儿介绍一下用注解的办法处理。从此告别findviewbyid。(偶尔)
**xUtils 3**
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.aaa)
private TextView aaa;
@ViewInject(R.id.bbb)
private TextView bbb;
@ViewInject(R.id.ccc)
private TextView ccc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
x.view().inject(this);//一定不要忘记这句话。
}
// @Event(value = R.id.mybut,type = View.OnClickListener.class)
@Event({R.id.buttonOn1,R.id.buttonOn2})
private void button(View view) {
if (view.getId() == R.id.buttonOn1) {
aaa.setText("sss");
bbb.setText("www");
ccc.setText("eee");
}else if(view.getId() == R.id.buttonOn2){
bbb.setText("2222222");
}
}
----------
<TextView
android:id="@+id/aaa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="aaaaa" />
<TextView
android:id="@+id/bbb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bbbbb" />
<TextView
android:id="@+id/ccc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ccccc!" />
<Button
android:id="@+id/buttonOn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" />
<Button
android:id="@+id/buttonOn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button2" />
**如果你使用的是
uXtils 2 :**
@ViewInject(R.id.et_path)
private EditText et_path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//这句话一定不能少,这句话相当与上面的那句。效果一样
ViewUtils.inject(this);
}
@ViewInject(R.id.textView)
TextView textView;
//@ViewInject(vale=R.id.textView, parentId=R.id.parentView)
//TextView textView;
@ResInject(id = R.string.label, type = ResType.String)
private String label;
// 取消了之前使用方法名绑定事件的方式,使用id绑定不受混淆影响
// 支持绑定多个id @OnClick({R.id.id1, R.id.id2, R.id.id3})
// or @OnClick(value={R.id.id1, R.id.id2, R.id.id3}, parentId={R.id.pid1, R.id.pid2, R.id.pid3})
// 更多事件支持参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
@OnClick(R.id.test_button)
public void testButtonClick(View v) { // 方法签名必须和接口中的要求一致
...
}
3,如果你使用的是butterknife,这和上面的有点点不同。
@InjectView(R.id.ok_btn) //控件对应的ID
2 Button mBtn;
3
4 @InjectView(R.id.title_text)
5 TextView mTitleTextView;
6
7 @Override
8 protected void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.main_activity);
11
12 ButterKnife.inject(this);
13
14 //这样之后就可以直接使用变量了
15 mTitleTextView.setText("test");
16
17 }
@InjectViews({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<EditText> nameViews;
@OnClick(R.id.submit)
public void submit() {
// TODO submit data to server...
}
//还可以批量为多个控件添加为同一个响应函数:
@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(DoorView door) {
if (door.hasPrizeBehind()) {
//todo
} else {
//todo
}
}
注:最新版的库已经将方法名改了,当然也是兼容上面所列的例子的。最新示例如下:
class ExampleActivity extends Activity {
@FindView(R.id.user) EditText username;
@FindView(R.id.pass) EditText password;
@OnClick(R.id.submit) void submit() {
// TODO call server...
}
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
// TODO Use fields...
}
}
用gradle配置的时候加入:
compile files(‘libs/butterknife-7.0.1.jar’),自己下载或者github导入包重点内容
sssssssssssssssssss内容
public class MainActivity extends Activity {
@Bind(R.id.tv_text1)
TextView tv_text1;
@Bind(R.id.tv_text2)
TextView tv_text2;
@Bind(R.id.tv_text3)
TextView tv_text3;
@Bind(R.id.tv_text4)
TextView tv_text4;
@Bind(R.id.tv_text5)
TextView tv_text5;
@Bind(R.id.tv_text6)
TextView tv_text6;
@Bind(R.id.tv_text7)
TextView tv_text7;
@Bind(R.id.tv_text8)
TextView tv_text8;
@BindString(R.string.hello_world) // 设置sting
String title;
@BindDrawable(R.drawable.ic_launcher) // 设置资源
Drawable graphic;
@BindColor(R.color.color_bule) // 设置颜色
int red;
@BindDimen(R.dimen.text_size) // 设置dimen值
float spacers;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(MainActivity.this);//绑定。
tv_text1.setText("1231");
tv_text2.setText("1024");
tv_text3.setText("5454");
tv_text4.setText("7865");
tv_text5.setText("9630");
tv_text6.setText("wertw");
}
@OnClick(R.id.tv_text1)
public void sayHi(TextView button) {
button.setText("你按到我了啦!");
}
@SuppressLint("NewApi")
@OnClick(R.id.tv_text2)
public void sayHi2(TextView button) {
button.setBackground(graphic);
}
@OnClick(R.id.tv_text3)
public void sayHi3(TextView button) {
button.setTextColor(red);
}
@OnClick(R.id.tv_text4)
public void sayHi4(TextView button) {
button.setTextSize(spacers);
}
**4,如果你使用的是很早的版本,继承RoboActivity的
,则:这个不要在onCreate里面写那几话。**
@InjectView(R.id.button)
Button goButton;
@InjectView(R.id.textview1)
TextView textView1;
@InjectView(R.id.textview2)
TextView textView2;
@InjectView(R.id.textview3)
TextView textView3;
@InjectView(R.id.textview4)
TextView textView4;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.injectview);
// goButton.setOnClickListener(mGoListener);
goButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.button) {
textView1.setText("Clicked");
textView2.setText("Clicked");
textView3.setText("Clicked");
textView4.setText("Clicked");
}
}
xUtils,butterknife...处理findviewbyid的更多相关文章
- 【Android】天气应用
模仿华为的"天气"应用写的一个小Demo.部分功能.动画效果没有实现,也没有过多考虑性能.Bug等其它方面的因素.写这个Demo的初衷是想熟悉下目前网上常用的一些框架. Demo采 ...
- Android Kotlin Annotation Processer
Annotation Processer 注解处理器(Annotation Processer)是javac内置的注解处理工具,可以在编译时处理注解,让我们自己做相应的处理.比如生成重复度很高的代码, ...
- android ButterKnife 解决重复findViewById
简介: 程序员都是懒惰的,不想写一大堆像下面这样的代码 class ExampleActivity extends Activity { TextView title; TextView subtit ...
- xUtils如何通过注解对FindViewById进行封装
之前讲到了介绍了一下xUtils的基本使用方法,今天我们就来详细介绍一下关于xUtils中的ViewUtils模块. 在ViewUtils模块中我们首先看到的是它采用了一种注解的方式进行声明,那么我们 ...
- xUtils怎样通过注解对FindViewById进行封装
之前讲到了介绍了一下xUtils的基本用法,今天我们就来具体介绍一下关于xUtils中的ViewUtils模块. 在ViewUtils模块中我们首先看到的是它採用了一种注解的方式进行声明,那么我们首先 ...
- 厌烦了写findViewById 试试ButterKnife吧
先上官网 http://jakewharton.github.io/butterknife/ 和 https://github.com/JakeWharton/butterknife 配置开发环境 ...
- 你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件
前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的findviewbyid~~~另一堆setOnXXXListener~有没有方便一点的方法让我们简单点不用每次都定义一次.find一次, ...
- Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)
首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile ...
- 告别findViewById(),ButterKnife,使用Google Data Binding Library(1)
Data Binding Library 用数据绑定编写声名性布局,可以最大限度的减少findViewById(),setOnClickListener()之类的代码.并且比起findViewById ...
随机推荐
- SpringMVC中Controller跳转到另一个Controller方法
1.直接Redirect后加 Controller/Action Response.Redirect("/User/Edit"); return Redirect("/U ...
- Zlib 在windows上的编译
1.下载http://www.zlib.net 下载,最新版本1.2.8 2.解压后,实际已提供了在vc下编译的工程,目录为:zlib-1.2.8\contrib\vstudio. 其中的zlibst ...
- 22. javacript高级程序设计-高级技巧
1. 高级技巧 1.1 函数 l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候 l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数 l ...
- Visual Studio 2013 (vs2013)中“向前定位”,“向后定位”按钮
Visual Studio 2013 (vs2013)中默认的界面中似乎没有向前向后定位这个非常实用的功能,下面是把它们找出来的方法: 方法1:右键-->工具栏空白处-->最下面,自定义- ...
- MinGW平台 openjpeg-2.1.0 静态编译后未定义引用的解决方法
undefined reference to __imp_opj_xxx keyword: ffmpeg,openjpeg,OPJ_EXPORTS,OPJ_STATIC,opj_version,__i ...
- pydev导入eclipse
编辑器:Python 自带的 IDLE 简单快捷, 学习Python或者编写小型软件的时候.非常有用. 编辑器: Eclipse + pydev插件 1. Eclipse是写JAVA的IDE, 这样就 ...
- HDU 1693 Eat the Trees(插头DP、棋盘哈密顿回路数)+ URAL 1519 Formula 1(插头DP、棋盘哈密顿单回路数)
插头DP基础题的样子...输入N,M<=11,以及N*M的01矩阵,0(1)表示有(无)障碍物.输出哈密顿回路(可以多回路)方案数... 看了个ppt,画了下图...感觉还是挺有效的... 参考 ...
- JPA查询语句(转载)
JPQL就是一种查询语言,具有与SQL 相类似的特征,JPQL是完全面向对象的,具备继承.多态和关联等特性,和hibernate HQL很相似. 查询语句的参数 JPQL语句支持两种方式的参数定义 ...
- jquery中使用event.target的几点
jquery中使用event.target的几点 1.this和event.target的区别: js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事 ...
- 【DPM】Deformable Part Models matlab代码在windows下的调试过程
我下载的是voc-release5 1.按照这篇文章,都操作了一遍:http://blog.csdn.net/pozen/article/details/7023742#quote 2.运行demo不 ...