全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
android如何创建自己的监听接口第一步:创建接口和方法public interface OnUsernameAvailableListener public abstract void onAvailableChecked(String username, boolean available);第二步:定义变量保存listenerOnUsernameAvailableListener onUsernameAvailableListener = null;第三步:提供方法允许用户设置Listener/ Allows the user to set an Listener and react to the eventpublic void setOnUsernameAvailableListener(OnUsernameAvailableListener listener) onUsernameAvailableListener = listener;第四步:提供方法允许用户获得Listenerpublic final OnUsernameAvailableListener getOnUsernameAvailableListener() return onUsernameAvailableListener;第五步:添加方法,此方法每次在监听事件被触发的时候调用/ This function is called after the check was completeprivate void OnUserChecked(String username, boolean available)/ Check if the Listener was set, otherwise well get an Exception when we try to call itif(onUsernameAvailableListener!=null) / Only trigger the event, when we have a usernameif(!TextUtils.isEmpty(username)onUsernameAvailableListener.onAvailableChecked(username, available);完成。附完整代码:package com.tseng.examples;import com.tseng.examples.CheckUsernameEditText.OnUsernameAvailableListener;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class RegisterExample extends Activity / Declare our Views, so we can access them laterprivate CheckUsernameEditText etUsername;private EditText etPassword;private EditText etPassword2;private Button btnRegister;private Button btnCancel;private TextView lblUserStatus; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); / Set Activity Layout setContentView(R.layout.main); / Get the EditText and Button References etUsername = (CheckUsernameEditText)findViewById(R.id.username); etPassword = (EditText)findViewById(R.id.password); etPassword2 = (EditText)findViewById(R.id.password2); btnRegister = (Button)findViewById(R.id.register_button); btnCancel = (Button)findViewById(R.id.cancel_button); lblUserStatus = (TextView)findViewById(R.id.userstatus); / Set our new Listener to the Username EditText view etUsername.setOnUsernameAvailableListener(new OnUsernameAvailableListener()Overridepublic void onAvailableChecked(String username, boolean available) / Handle the event hereif(!available)etUsername.setTextColor(Color.RED);lblUserStatus.setText(username + is already taken. Please choose another login name.); else etUsername.setTextColor(Color.GREEN);lblUserStatus.setText(username + is available.); ); / Set Click Listener btnRegister.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / create Account); btnCancel.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / Close the applicationfinish();); package com.tseng.examples;import java.lang.reflect.Array;import android.content.Context;import android.text.TextUtils;import android.util.AttributeSet;import android.view.KeyEvent;import android.view.View;import android.view.View.OnKeyListener;import android.widget.EditText;import android.widget.TextView;public class CheckUsernameEditText extends EditText implements OnKeyListener OnUsernameAvailableListener onUsernameAvailableListener = null;final private static String registeredUsers = new String / This is just a fixed List for tutorial purposes/ in a real application youd check this server sided or inside the databasetseng,admin,root,joedoe,john;public CheckUsernameEditText(Context context) super(context);/ Set KeyListener to ourselfthis.setOnKeyListener(this);public CheckUsernameEditText(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle);/ Set KeyListener to ourselfthis.setOnKeyListener(this);public CheckUsernameEditText(Context context, AttributeSet attrs) super(context, attrs);/ Set KeyListener to ourselfthis.setOnKeyListener(this);/ Allows the user to set an Listener and react to the eventpublic void setOnUsernameAvailableListener(OnUsernameAvailableListener listener) onUsernameAvailableListener = listener;/ This function is called after the check was completeprivate void OnUserChecked(String username, boolean available)/ Check if the Listener was set, otherwise well get an Exception when we try to call itif(onUsernameAvailableListener!=null) / Only trigger the event, when we have a usernameif(!TextUtils.isEmpty(username)onUsernameAvailableListener.onAvailableChecked(username, available);Overridepublic boolean onKey(View v, int keycode, KeyEvent keyevent) / We only want to handle ACTION_UP events, when user releases a keyif(keyevent.getAction()=KeyEvent.ACTION_DOWN)return false;boolean available = true;/ Whenever a user press a key, check if the username is availableString username = getText().toString().toLowerCase();if(!TextUtils.isEmpty(username)/ Only perform check, if we have anything inside the EditText boxfor(int i=0; iregisteredUsers.length; i+) if(registeredUsersi.equals(username)available = false;/ Finish the loop, as the name is already takenbreak;/ Tr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗争议赔偿协议书
- 个人房屋承包协议书
- 机械进出口合同范本
- 内蒙正骨健康协议书
- 养羊租地合同协议书
- 核酸转运协议书范本
- 医务人员聘任协议书
- 医疗整形医患协议书
- 山东滨州高新技术产业开发区2025年下半年招考雇员制工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 山东五莲县2025年下半年招考事业单位专业技术人员易考易错模拟试题(共500题)试卷后附参考答案
- 江西铜业校招笔试题及答案
- 2025国际贸易合同协议书标准版范本
- 2025宁夏建设投资集团有限公司招聘60人笔试历年典型考点题库附带答案详解试卷2套
- 积极心理学理论知识考核试题及答案
- 2025年《治安管理处罚法》多项选择题题库及答案
- 全国大学生职业规划大赛《网络直播与运营》专业生涯发展展示【高职(专科)】
- 试验员安全综合能力考核试卷含答案
- GB/T 18711-2025选煤用磁铁矿粉试验方法
- 2025年国考国家能源局无领导小组讨论资源分配类题目实战
- 2025秋季石油工业出版社有限公司高校毕业生招聘考试参考试题及答案解析
- 中国对外贸易中心集团笔试题库
评论
0/150
提交评论