java 接口回调实例详解

时间:2021-10-16 05:20:39

java 接口回调实例详解

首先官方对接口回调的定义是这样的,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。这样听起来有点绕,我们可以这么理解接口回调:比如我们想知道隔壁老王啥时候回家?但是我们有自己的事情做不能一直监视着老王,那么我们可以雇员小区的保安来完成这个任务,当老王回家口,保安就给我们打电话告诉我们,老王回来了!这样就完成了一个事件的传递;

首先我们定义了一个接口:

?
1
2
3
4
5
6
7
public interface DynamicMessageListener {
/**
 * 获取网络数据,
 * @param bean bean 对象
 */
void getDynamicData(List<DynamicBean.DataBean> bean, boolean isMore);
}

    定义一个类实现这个接口:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class DynamicFragment extends Fragment implements DynamicMessageListener {
//初始化监听者
  private DynamicMessageListener listener;
/**
   * 获取网络数据
   *
   * @param bean bean 对象
   */
 
  @Override
  public void getDynamicData(List<DynamicBean.DataBean> bean, boolean isMore) {
    if (bean != null && bean.size() > 0) {
      if (!isMore) {
        adapter = new DynamicAdapter(mContext, bean, this, classID);
        friendLv.setAdapter(adapter);
        adapter.setListener(this);
        LLog.e("activity------有数据");
      } else {
        adapter.setData(bean);
      }
 
    }
 
  }
}

    在网络请求层调用上面的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class DynamicModel extends BaseModel {
 
 
  private Context mContext;
  private NetUtils net;
  private DynamicMessageListener listener;
 
  public DynamicModel(Context mContext, DynamicMessageListener listener) {
    this.mContext = mContext;
    net = NetUtils.getInstance();
    this.listener = listener;
  }
/**
   * 加载网络数据,
   * @param url  网络url
   * @param params 请求网络携带的参数
   */
  public void loadData(String url, RequestParams params) {
    net.sendGetRequest(url, params, new NetUtils.NetUtilsCallBack() {
      @Override
      public void getNetdata(String json) {
        if (json != null) {
          Gson gson = new Gson();
          DynamicBean bean = gson.fromJson(json, DynamicBean.class);
          List<DynamicBean.DataBean> data = bean.getData();
          listener.getDynamicData(data, false);
          if(data ==null||data.size() <=0 ){
            listener.friendsNoData(false);
            LLog.e("没有数据-----");
          }
        }
      }
      @Override
      public void loadError(int a) {
        showError(a, mContext);
      }
    });
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/aj2722465/article/details/54882712