日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中常见的MVC模式

發布時間:2025/4/16 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中常见的MVC模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MVC模式的簡要介紹

MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實現Web系統的職能分工。 Model層實現系統中的業務邏輯。 View層用于與用戶的交互。 Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求并選擇恰當的視圖以用于顯示,同時它也可以解釋用戶的輸入并將它們映射為模型層可執行的操作。


Android中的Launcher

通過查看Android中的Launcher的源碼,大家會發現其中會有LauncherModel.java,Workspace.java,Launcher.java。

其中LauncherModel為輔助文件封裝了許多對數據庫的操作(對應MVC中的Model);Workspace為一個抽象的桌面,將應用顯示在用戶面前,與用戶進行交互(對應MVC中的View);Launcher是主要的Activity,里面有很多對用戶的操作進行處理,并且將結果反饋在Workspace中(對應MVC中的Controller)。

Android中的其它View

在Android中有常見的ListView,GridView,Gallery等等一些控件能夠很好的體現MVC模式,下面將一GridView顯示設備上的所有應用為例子講解MVC模式的應用。先上圖。


在main.xml的布局文件中定義GridView:

[html]?view plaincopy
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:orientation="vertical"??
  • ????android:layout_width="fill_parent"??
  • ????android:layout_height="fill_parent"??
  • ????>??
  • <GridView?android:id="@+id/myGrid"??????
  • ????android:layout_width="fill_parent"???
  • ????android:layout_height="fill_parent"??
  • ????android:padding="10dip"??
  • ????android:verticalSpacing="10dip"??
  • ????android:horizontalSpacing="10dip"??
  • ????android:numColumns="5"??
  • ????android:stretchMode="columnWidth"??
  • ????android:gravity="center"??
  • ????/>???
  • </LinearLayout>??
  • 顧名思義,GridView就是MVC中的View負責顯示。

    獲取設備上安裝的應用信息所有對應的方法,這就是對應的Model。

    [java]?view plaincopy
  • public?void?bindAllApps(){??
  • ???????//這里是關鍵哦,我們平時寫的應用總有一個activity申明成這兩個屬性??
  • ???????//也就是應用的入口??
  • ???????Intent?mainIntent?=?new?Intent(Intent.ACTION_MAIN,?null);??
  • ???????mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);??
  • ???????//符合上面條件的全部查出來,并且排序??
  • ???????mAllApps?=?mPackageManager.queryIntentActivities(mainIntent,?0);??
  • ???????Collections.sort(mAllApps,?new?ResolveInfo.DisplayNameComparator(mPackageManager));??
  • ???}??
  • 方法中?mAllApps對應的類型為 List<ResolveInfo> ?。

    在該例子中最要的就是Adapter,是Model和View中的橋梁,就是?Controller。

    [java]?view plaincopy
  • private?class?GridItemAdapter?extends?BaseAdapter{??
  • ???????private?Context?context;??
  • ???????private?List<ResolveInfo>?resInfo;??
  • ?????????
  • ???????//構造函數??
  • ???????public?GridItemAdapter(Context?c,List<ResolveInfo>?res){??
  • ???????????context?=?c;??
  • ???????????resInfo?=?res;??
  • ???????}??
  • ???????@Override??
  • ???????public?int?getCount()?{??
  • ???????????//?TODO?Auto-generated?method?stub??
  • ???????????return?resInfo.size();??
  • ???????}??
  • ???????@Override??
  • ???????public?Object?getItem(int?position)?{??
  • ???????????//?TODO?Auto-generated?method?stub??
  • ???????????return?null;??
  • ???????}??
  • ???????@Override??
  • ???????public?long?getItemId(int?position)?{??
  • ???????????//?TODO?Auto-generated?method?stub??
  • ???????????return?0;??
  • ???????}??
  • ???????@Override??
  • ???????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{??
  • ?????????????
  • ???????????convertView?=?LayoutInflater.from(context)??
  • ???????????.inflate(R.layout.application_layout,?null);??
  • ?????????????
  • ???????????ImageView?app_icon?=?(ImageView)convertView.findViewById(R.id.app_icon);??
  • ???????????TextView?app_tilte?=?(TextView)convertView.findViewById(R.id.app_title);??
  • ?????????????
  • ???????????ResolveInfo?res?=?resInfo.get(position);??
  • ???????????app_icon.setImageDrawable(res.loadIcon(mPackageManager));??
  • ???????????app_tilte.setText(res.loadLabel(mPackageManager).toString());??
  • ???????????return?convertView;??
  • ???????}??
  • ?????????
  • ???}??
  • 總結

    以上是生活随笔為你收集整理的Android中常见的MVC模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。