设计模式_接口回调

来源:互联网 发布:华为mate9数据恢复 编辑:程序博客网 时间:2024/06/10 03:50

    在java组件编程时(如Android编程)时会十分频繁的使用到接口回调,以前我都没有发现,只是照着书上写的做。最常见的就是View.setonClickListener(new View.onClickListener())这样的语句了。因为最近看得代码也渐渐多起来了,所以很自然的就发现这个问题了,然后还好现在Android中的sdk源码都是可以直接查看的,现在我明白了。

感觉接口回调也是一种多态的表现,过程就像View类中实现了onClickListener接口,即实现了onClickListener中的onClick方法。不过这个onClick方法只是一个空方法,我们使用一个继承自View的组件,如Button时,在为其注册onClickListener事件的过程中定义了具体的onClick实现方法。

其实对于接口回调的思考是源自opensudoku代码,下面是其中的代码片段:

Java代码 复制代码 收藏代码
  1. private static class FolderListViewBinder implements ViewBinder {
  2. private Context mContext;
  3. private FolderDetailLoader mDetailLoader;
  4. public FolderListViewBinder(Context context) {
  5. mContext = context;
  6. mDetailLoader = new FolderDetailLoader(context);
  7. }
  8. @Override
  9. public boolean setViewValue(View view, Cursor c,int columnIndex) {
  10. switch (view.getId()) {
  11. case R.id.name:
  12. ((TextView)view).setText(c.getString(columnIndex));
  13. break;
  14. case R.id.detail:
  15. final long folderID = c.getLong(columnIndex);
  16. final TextView detailView = (TextView)view;
  17. detailView.setText(mContext.getString(R.string.loading));
  18. mDetailLoader.loadDetailAsync(folderID, new FolderDetailCallback() {
  19. @Override
  20. public void onLoaded(FolderInfo folderInfo) {
  21. if (folderInfo != null)
  22. detailView.setText(folderInfo.getDetail(mContext));
  23. }
  24. });
  25. }
  26. return true;
  27. }
  28. public void destroy() {
  29. mDetailLoader.destroy();
  30. }
  31. }  
原创粉丝点击