編輯:關於Android編程
模型-視圖-控制器(MVC)是Xerox PARC在八十年代為編程語言Smalltalk-80發明的一種軟件設計模式,至今已被廣泛使用。最近幾年被推薦為Sun公司J2EE平台的設計模式,並且受到越來越多的使用 ColdFusion 和 PHP 的開發者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點。
二、MVC如何工作
現在我們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並通過表示層呈現給用戶。
自定義Adapter的實現
在xml中添加listview組件,

然後創建自己list item模板

其中包括一個image(頭像),name, age, info(黑色字體信息)。
下面是JAVA代碼部分,開始實現自定義的Adapter。
package com.example.a18_listview;
public class Person {
private int image;
private String name;
private int age;
private String info;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public int getImage() {
return image;
}
public Person(int image, String name, int age, String info) {
super();
this.image = image;
this.name = name;
this.age = age;
this.info = info;
}
public void setImage(int image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
類中定義了view list模版中需要的屬性。
private String names[] = { "如花", "旺財", "小翠", "小芳", "小剛", "小龍" };
private int images[] = { R.drawable.ruhua, R.drawable.wangcai,
R.drawable.xiaocui, R.drawable.xiaofang, R.drawable.xiaogang,
R.drawable.xiaolong };
private int ages[] = { 18, 19, 20, 21, 22, 23 };
private String infos[] = {"我很高興"};
……
for (int i = 0; i < 6; i++) {
list.add(new Person(images[i], names[i], ages[i], infos[0]));
}
現在有了M和V ,只差C的實現。
@Override
public int getCount() {// 獲取數量 將來要設定到lsitview控件上面的數據源的個數
// TODO Auto-generated method stub
return list.size();
}
第二個:獲得條目,返回值為object表示可以返回任何類型,可以根據自己需要返回。此處返回的是list ID,也可以返回list條目中的項目,如 : return list.get(position);
@Override
public Object getItem(int position) {// 獲取元素的對象(一般用在監聽事件)
// TODO Auto-generated method stub
return position;
}
第三個:獲得條目ID,如果在條目中定義了ID 這個屬性,可以返回該值,此處,返回調用值,即list的ID 是順序排列。
@Override
public long getItemId(int position) {// 獲取元素的ID(一般用在監聽事件)
// TODO Auto-generated method stub
return position;
}
第四個:填充listView視圖,繪制listView視圖
/**
* getview獲取listview的每一項的view視圖(返回的是具體的內容)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
/**
* 將布局(int)轉化為view類型視圖
*/
View inflate = LayoutInflater.from(context).inflate(
resource, null);
// 將arraylist數據源的數據設定到控件上面
Person person = list.get(position);
String name = person.getName();
int image = person.getImage();
int age = person.getAge();
// 設定到控件上面去
// 找控件
TextView tv = (TextView) inflate.findViewById(R.id.st_name);
ImageView iv = (ImageView) inflate.findViewById(R.id.st_image);
TextView st_age = (TextView) inflate.findViewById(R.id.st_age);
/**
* 設定內容
*/
tv.setText(name);
iv.setImageResource(image);
st_age.setText(age + "");//age為int類型,而settext傳入的參數為charsequence
return inflate;
}
最後是完成構造器
// 參數為 布局,數據源,
public MyAdapter(int resource, ArrayList list, Context context) {
this.resource = resource;
this.list = list;
this.context = context;
}
到這裡,自己的myadapter類就完成了。回到主函數中進行MC與VC的關聯,就完成了整個MVC過程。
/**
* 適配器
*/
MyAdapter adapter = new MyAdapter(R.layout.mylistview_item, list,
ThirdAct.this);
將viewlist和adapter關聯,通過listview的set方法將adapter傳遞給listview。
/**
* 將adapter適配器設定到listview中
*/
lv.setAdapter(adapter);
到這裡就完成自定義的adapter。
package com.example.a18_listview;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class ThirdAct extends Activity {
private ListView lv;
private String names[] = { "如花", "旺財", "小翠", "小芳", "小剛", "小龍" };
private int images[] = { R.drawable.ruhua, R.drawable.wangcai,
R.drawable.xiaocui, R.drawable.xiaofang, R.drawable.xiaogang,
R.drawable.xiaolong };
private int ages[] = { 18, 19, 20, 21, 22, 23 };
private String infos[] = {"我很高興"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) this.findViewById(R.id.lv);
/**
* 數據源
*/
ArrayList list = new ArrayList();
for (int i = 0; i < 6; i++) {
list.add(new Person(images[i], names[i], ages[i], "我很高興"));
}
/**
* 適配器
*/
MyAdapter adapter = new MyAdapter(R.layout.mylistview_item, list,
ThirdAct.this);
/**
* 將adapter適配器設定到listview中
*/
lv.setAdapter(adapter);
}
}
Android中關於百度糯米app關閉網頁或窗口的方法(99%人不知)
我們公司做了一款使用百度錢包的移動網頁支付進行支付的產品,用戶通過百度錢包、百度糯米掃描我們產品的二維碼,選擇商品,點擊支付將會自動調用百度錢包進行支付,支付成功後返回成
Android仿微信、QQ附近好友雷達掃描效果
1.概述 最近一直到在帶實習生,因為人比較多,所以很長一段時間沒有更新博客了,今天更新一篇雷達掃描附近好友效果,以後盡量每周更新一篇,先看一下效果: 2.實現 1、效果
Android OpenGLES2.0(五)——繪制立方體
上篇博客中我們提到了OpenGLES中繪制的兩種方法,頂點法和索引法。之前我們所使用的都是頂點法,這次繪制立方體使用索引法來繪制立方體。構建立方體上篇博客講到正方形的繪制
Android 用戶登錄界面
本篇博客主要給大家演示如何一步一步地創建一個類似於下圖展示的這麼一個UI界面: 一、准備圖片資源 第二步:ImageButton設置 源