demo: EditText計算身高體重,使用觀察者模式實現

1.內部類實現

package com.zhg.day0102;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import android.widget.LinearLayout.LayoutParams;public class Day01_02Activity extends Activity {private TextView tvHeight, tvWeight;private EditText etHeight, etWeight;private Button btnCalc, btnCancle;private LinearLayout root, row1, row2, row3;/**內部類重寫OnClickListener方法 * 创建一个监听器类,实现OnClickListener接口 *  * @author Administrator *  */private class ButtonClickListener implements OnClickListener {/** * 单击事件的处理方法 *  */public void onClick(View v) {// TODO Auto-generated method stub   String text = ((Button) v).getText().toString();if ("计算".equals(text)) {double height = 0;double weight = 0;//获取身高if(etHeight.getText()!=null && !"".equals(etHeight.getText().toString().trim())){height = Double.parseDouble(etHeight.getText().toString());}//获取体重if(etWeight.getText()!=null && !"".equals(etWeight.getText().toString().trim())){weight = Double.parseDouble(etWeight.getText().toString());}Log.i("info", "height=" + height);Log.i("info", "weight=" + weight);//计算bmi值double bmi = weight/(height*height/10000);Log.i("info", "bmi=" + bmi);//根据bmi值 输入身材提示if(bmi<18){Toast.makeText(Day01_02Activity.this, "偏瘦", 3000).show();}else if(bmi<=25){Toast.makeText(Day01_02Activity.this, "标准", 3000).show();}else if(bmi<=30){Toast.makeText(Day01_02Activity.this, "偏胖", 3000).show();}}else{//单击btnCancel//清空文本框etHeight.setText("");etWeight.setText("");}}}private void setupView() {tvHeight = new TextView(this);tvHeight.setText("身高");etHeight = new EditText(this);LayoutParams p1 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1.0f);// etHeight.setLayoutParams(p1);row1 = new LinearLayout(this);row1.addView(tvHeight);row1.addView(etHeight, p1);tvWeight = new TextView(this);tvWeight.setText("体重");etWeight = new EditText(this);etWeight.setLayoutParams(p1);row2 = new LinearLayout(this);row2.addView(tvWeight);row2.addView(etWeight);btnCalc = new Button(this);btnCalc.setText("计算");btnCancle = new Button(this);btnCancle.setText("取消");row3 = new LinearLayout(this);row3.addView(btnCalc, p1);row3.addView(btnCancle, p1);root = new LinearLayout(this);root.setOrientation(LinearLayout.VERTICAL);root.addView(row1);root.addView(row2);root.addView(row3);setContentView(root);}private void addListener() {// 创建监听器对象ButtonClickListener listener = new ButtonClickListener();// 注册监听对象到要监听的事件源btnCalc.setOnClickListener(listener);btnCancle.setOnClickListener(listener);}/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.main);setupView();addListener();}}



2.匿名類實現


package com.tarena.day0104;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import android.widget.LinearLayout.LayoutParams;public class Day01_04Activity extends Activity {private TextView tvHeight, tvWeight;private EditText etHeight, etWeight;private Button btnCalc, btnCancle;private LinearLayout root, row1, row2, row3;//創建介面private void setupView() {tvHeight = new TextView(this);tvHeight.setText("身高");etHeight = new EditText(this);LayoutParams p1 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1.0f);// etHeight.setLayoutParams(p1);row1 = new LinearLayout(this);row1.addView(tvHeight);row1.addView(etHeight, p1);tvWeight = new TextView(this);tvWeight.setText("体重");etWeight = new EditText(this);etWeight.setLayoutParams(p1);row2 = new LinearLayout(this);row2.addView(tvWeight);row2.addView(etWeight);btnCalc = new Button(this);btnCalc.setText("计算");btnCancle = new Button(this);btnCancle.setText("取消");row3 = new LinearLayout(this);row3.addView(btnCalc, p1);row3.addView(btnCancle, p1);root = new LinearLayout(this);root.setOrientation(LinearLayout.VERTICAL);root.addView(row1);root.addView(row2);root.addView(row3);setContentView(root);}//創建監聽方法private void addListener() {// 注册监听对象到要监听的事件源,匿名類實現,只調用一次btnCalc.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(Day01_04Activity.this, "btnCalc被单击", 3000).show();}});btnCancle.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(Day01_04Activity.this, "btnCancel被单击", 3000).show();}});}/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//調用創建介面方法setupView();//調用監聽方法addListener();}}



3.直接實現

package com.zhg.day0103;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import android.widget.LinearLayout.LayoutParams;public class Day01_03Activity extends Activity implements OnClickListener{private TextView tvHeight, tvWeight;private EditText etHeight, etWeight;private Button btnCalc, btnCancle;private LinearLayout root, row1, row2, row3;public void onClick(View v) {//取得文本框的值String text = ((Button) v).getText().toString();//觸發點擊事件if ("计算".equals(text)) {Toast.makeText(Day01_03Activity.this, "btnCalc按钮被单击", 3000).show();}else{Toast.makeText(Day01_03Activity.this, "btnCancel按钮被单击", 3000).show();}}private void setupView() {tvHeight = new TextView(this);tvHeight.setText("身高");etHeight = new EditText(this);LayoutParams p1 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1.0f);// etHeight.setLayoutParams(p1);row1 = new LinearLayout(this);row1.addView(tvHeight);row1.addView(etHeight, p1);tvWeight = new TextView(this);tvWeight.setText("体重");etWeight = new EditText(this);etWeight.setLayoutParams(p1);row2 = new LinearLayout(this);row2.addView(tvWeight);row2.addView(etWeight);btnCalc = new Button(this);btnCalc.setText("计算");btnCancle = new Button(this);btnCancle.setText("取消");row3 = new LinearLayout(this);row3.addView(btnCalc, p1);row3.addView(btnCancle, p1);root = new LinearLayout(this);root.setOrientation(LinearLayout.VERTICAL);root.addView(row1);root.addView(row2);root.addView(row3);setContentView(root);}private void addListener() {// 注册监听对象到要监听的事件源btnCalc.setOnClickListener(this);btnCancle.setOnClickListener(this);}/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.main);setupView();addListener();}}


更多相关文章

  1. Android在ListView中获得对应行的button点击事件
  2. android ListView的常用事件
  3. 事件总线EventBus Android开源库的使用
  4. android listview的item里面的imageview的点击事件
  5. Notification 事件 使用
  6. android点击手机返回键触发事件
  7. android home键点击事件处理
  8. Android监听事件

随机推荐

  1. 最新Android(安卓)ADT, SDK, SDK_tool等
  2. 最新Android(安卓)ADT, SDK, SDK_tool等
  3. Android的JNI实现基础
  4. android studio :com.android.support:app
  5. android布局属性大全
  6. Ubuntu 11.04 下搭建Android(安卓)NDK开
  7. 最新Android(安卓)ADT, SDK, SDK_tool等
  8. android获得设备信息
  9. android 相对布局覆盖问题
  10. Android(安卓)开发时遇到的两个模拟器问