<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發

      導航

      框架模式MVC在安卓中的實踐

      我們采用ListView來演示我們的MVC模式,目錄結構:

      實體類:包含了書的名字和圖片信息

      public class Book {
      
          //書名
          private String name;
          //書的圖片
          private int image;
      
          public Book(String name, int image) {
              this.name = name;
              this.image = image;
          }
      

      模型類(Model層):通常是對本地數據庫的操作或者是通過網絡請求獲取網絡數據的操作 
      我們在Model里面模擬了一個本地數據庫,并提供了增刪改查的方法

      public class BookModel {
      
          private static List<Book> list = new ArrayList<>();
      
          /**
           * 模擬本地數據庫
           */
          static {
              list.add(new Book("Java從入門到精通", R.drawable.java));
              list.add(new Book("Android從入門到精通", R.drawable.android));
              list.add(new Book("Java從入門到精通", R.drawable.java));
              list.add(new Book("Android從入門到精通", R.drawable.android));
          }
      
          /**
           * 添加書本
           * @param name
           * @param image
           */
          public void addBook(String name, int image) {
              list.add(new Book(name, image));
          }
      
          /**
           * 刪除書本
           */
          public void deleteBook( ) {
              list.remove(list.size() - 1);
          }
      
          /**
           * 查詢數據庫所有書本
           * @return
           */
          public List<Book> query() {
              return list;
          }
      
      }
      

      控制器(Controller層):根據Model層的方法,加上我們的業務邏輯處理,對外提供方法并暴露接口 
      看delete這個方法,判斷List是否為空(業務邏輯),使用mode.deleteBook()(Model層方法),通過listener.onComplete()(暴露接口)

      public class BookController {
      
          private BookModel mode;
      
          public BookController() {
              mode = new BookModel();
          }
      
          /**
           * 添加書本
           * @param listener
           */
          public void add(onAddBookListener listener) {
              mode.addBook("JavaWeb從入門到精通", R.drawable.javaweb);
              if (listener != null) {
                  listener.onComplete();
              }
          }
      
          /**
           * 刪除書本
           * @param listener
           */
          public void delete(onDeleteBookListener listener) {
              if(mode.query().isEmpty()){
                 return;
              }else{
                  mode.deleteBook();
              }
              if (listener != null) {
                  listener.onComplete();
              }
          }
      
          /**
           * 查詢所有書本
           * @return
           */
          public List<Book> query() {
              return mode.query();
          }
      
          /**
           * 添加成功的回調接口
           */
          public interface onAddBookListener {
              void onComplete();
          }
      
          /**
           * 刪除成功的回調接口
           */
          public interface onDeleteBookListener {
              void onComplete();
          }
      }
      

      視圖(View層):我們操作Controller獲取List數據填充到ListView中,同時可以添加書本和刪除書本

      public class BookActivity extends AppCompatActivity implements View.OnClickListener {
      
          private BookController bookController;
      
          private ListView lv_book;
          private List<Book> list;
          private BookAdapter adapter;
          private Button bt_add, bt_delete;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_book);
              lv_book = (ListView) findViewById(R.id.lv);
              bt_add = (Button) findViewById(R.id.bt_add);
              bt_delete = (Button) findViewById(R.id.bt_delete);
              bt_add.setOnClickListener(this);
              bt_delete.setOnClickListener(this);
      
              bookController = new BookController();
              list = bookController.query();
              adapter = new BookAdapter(this, list);
              lv_book.setAdapter(adapter);
          }
      
          @Override
          public void onClick(View v) {
              switch (v.getId()) {
                  //添加書本按鈕
                  case R.id.bt_add:
                      bookController.add(new BookController.onAddBookListener() {
                          @Override
                          public void onComplete() {
                              adapter.notifyDataSetChanged();
                          }
                      });
                      break;
                  //刪除書本按鈕
                  case R.id.bt_delete:
                      bookController.delete(new BookController.onDeleteBookListener() {
                          @Override
                          public void onComplete() {
                              adapter.notifyDataSetChanged();
                          }
                      });
                      break;
              }
          }
      }
      

      效果圖

      源碼

      github:https://github.com/AndroidHensen/Design-Mode

        

       

      https://blog.csdn.net/qq_30379689/article/details/52909656

      posted on 2016-11-18 18:25  安卓筆記俠  閱讀(671)  評論(2)    收藏  舉報

      主站蜘蛛池模板: 在线欧美精品一区二区三区| 国产精品亚洲专区无码破解版| 国产无码高清视频不卡| 久久久久久综合网天天| 少妇人妻偷人精品视频| 亚洲精品色哟哟一区二区| 国产av中文字幕精品| 人妻有码av中文字幕久久琪| 999福利激情视频| 国产精品一区二区三区麻豆 | 亚洲三区在线观看内射后入| 国产成人精品亚洲精品密奴| 亚洲精品国产免费av| 亚洲日韩av无码一区二区三区| 亚洲成人av一区免费看| 丁香五月亚洲综合在线国内自拍| 亚洲精品久久久久玩吗| 亚洲av色香蕉一二三区| 中文字幕亚洲国产精品| 国产呻吟久久久久久久92| 亚洲香蕉免费有线视频| 亚洲 日本 欧洲 欧美 视频| 广南县| 自拍偷在线精品自拍偷99| 无码专区 人妻系列 在线| 杭州市| 国产精品七七在线播放| 狠狠躁夜夜躁人人爽天天古典| 人妻少妇精品中文字幕| 国产日韩综合av在线| 亚洲综合久久精品哦夜夜嗨| 中文字幕国产原创国产| 日韩精品福利一区二区三区| 麻豆精品在线| 尤物国产精品福利在线网| 人妻少妇偷人无码视频| 国产日韩精品欧美一区喷水| 五月天天天综合精品无码| 国产一区二区三区黄网| 亚洲免费成人av一区| 久久88香港三级台湾三级播放|