如何写监听回调(事件完成监听、点击响应监听 )

本文介绍监听回调机制的两种实现方式:一种是通过方法调用来等待特定事件完成后再执行操作;另一种是通过点击监听来实现响应操作。文章通过具体示例详细讲解了如何使用这两种方式,并展示了如何在监听回调中获取数据并更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
转载请注明出处:如何写监听回调(事件完成监听、点击响应监听 )_Mr_Leixiansheng的博客-优快云博客 

* 主要对监听回调做一个简单说明
* 监听的作用:某一事件只要出现,就会调用其对应的方法,进行响应操作
*
* 方式有2
* 1:常规方式。和控件设置点击监听一样,点击后实现响应操作
* 2:方法调用方式。常用于等待某一事件完成后在进行相应操作,比如数据获取,再刷新UI。要先等待数据获取完毕才能刷新。
内容:通过监听方式,获取数据,再刷新UI
步骤:
1、新建一个类
2、类中定义一个接口
3、对外暴露接口(无论是点击方式暴露,还是调用方法暴露)(接口的方法中可以传递数据)
4、主程序中设置监听,调用接口,在监听中获取数据,以handler方式刷新UI
代码如下:
1、新建类,设置好监听
 
package com.leixiansheng.testlistener; import android.content.Context; import android.util.Log; /** * Created by Leixiansheng on 2017/6/28. */ public class JsonData { private Context context; //构造函数,获取上下文 public JsonData(Context context) { this.context = context; } //定义接口 public interface OnLoadingFinishListener { public void getData(String str); } //调用方法方式对外暴露接口 public void connect(OnLoadingFinishListener listener) { Log.i("JsonData", "connect"); listener.getData("实现一个监听回调功能"); } //点击监听方式对外暴露接口(一般要继承某些父类) private OnLoadingFinishListener listener; public void setOnLoadingFinish(OnLoadingFinishListener listener) { this.listener = listener; } /** * 之后在方法中实现对listener.getData即可 */ }
2、主场呢供需中实现监听回调
 
package com.leixiansheng.testlistener; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; /** * 主要对监听回调做一个简单说明 * 监听的作用:某一事件只要出现,就会调用其对应的方法,进行响应操作 * * 方式有2 * 1:常规方式。和控件设置点击监听一样,点击后实现响应操作 * 2:方法调用方式。常用于等待某一事件完成后在进行相应操作,比如数据获取,再刷新UI。要先等待数据获取完毕才能刷新。 */ public class MainActivity extends AppCompatActivity { private JsonData.OnLoadingFinishListener mListener; private JsonData jsonData; private TextView tvData; private String setText; /** * handler方式刷新界面 */ private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); tvData.setText(setText); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvData = (TextView) findViewById(R.id.json_data_tv); jsonData = new JsonData(this); /** * 设置监听 */ mListener = new JsonData.OnLoadingFinishListener() { @Override public void getData(final String str) { //此处获取数据 Log.i("MainActivity:", str); setText = str; //求情刷新UI handler.sendEmptyMessageDelayed(1, 2000); } }; //方法式调用接口 jsonData.connect(mListener); /** * 点击监听式调用接口 */ jsonData.setOnLoadingFinish(new JsonData.OnLoadingFinishListener() { @Override public void getData(String str) { Toast.makeText(MainActivity.this, "点击监听式调用接口",Toast.LENGTH_SHORT).show(); } }); } } 

布局只有一个TextView
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值