在开发中为控件添加Listener是非常常见的工作,最简单的添加Listener方式可以这样:
findViewById(R.id.but001).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "第一种", Toast.LENGTH_SHORT)
.show();
}
});
采用这种方法添加Listener有个缺点就是如果控件太多的话,Listener数量也会增多。因此大多数的项目会通过自己的activity实现单击的接口。可是这不是唯一的解决方式,这里第一种方式就是采用如下的小窍门减少Listener的数量:
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.but002:
Toast.makeText(MainActivity.this, "第二种", Toast.LENGTH_SHORT)
.show();
break;
}
}
};
findViewById(R.id.but002).setOnClickListener(listener);
这里还有一种方式可以更简便的解决这种问题:
在布局文件xml中:
<Button
android:id="@+id/but003"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="myClickListener03"
android:text="第三种" />
在你的Java文件中:
public void myClickListener03(View target){
switch (target.getId()) {
case R.id.but003:
Toast.makeText(MainActivity.this, "第三种", Toast.LENGTH_SHORT)
.show();
break;
}
}
这里给出所有的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/but001"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第一种" />
<Button
android:id="@+id/but002"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第二种" />
<Button
android:id="@+id/but003"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="myClickListener03"
android:text="第三种" />
</LinearLayout>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.but001).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "第一种", Toast.LENGTH_SHORT)
.show();
}
});
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.but002:
Toast.makeText(MainActivity.this, "第二种", Toast.LENGTH_SHORT)
.show();
break;
}
}
};
findViewById(R.id.but002).setOnClickListener(listener);
}
public void myClickListener03(View target) {
switch (target.getId()) {
case R.id.but003:
Toast.makeText(MainActivity.this, "第三种", Toast.LENGTH_SHORT).show();
break;
}
}
}
很简单是吧^_^