生活随笔
收集整理的這篇文章主要介紹了
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(){?? ????????? ????????? ???????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()?{?? ????????????? ???????????return?resInfo.size();?? ???????}?? ???????@Override?? ???????public?Object?getItem(int?position)?{?? ????????????? ???????????return?null;?? ???????}?? ???????@Override?? ???????public?long?getItemId(int?position)?{?? ????????????? ???????????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模式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。