????? 由于小弟初到貴境透绩,人生路不熟励饵,而對于簡書文章編輯器發(fā)代碼的操作更是頭疼调塌,不知道怎么很好的把java代碼呈現(xiàn)出來,就直接上圖了嵌削。后接代碼,供學(xué)習(xí)辣卒。要拿的話掷贾,自己扒走貼上,格式化一下就O了
????? 我是一個安卓小白荣茫,在學(xué)的過程中把自己的理解給分享上來想帅,希望有人高人指點指點,大家交流交流哈 啡莉! ^ ^
/**ListView的Adapter應(yīng)用 * 1港准、使用MVC設(shè)計模式 * M:ListView——Item集合 * V:集合——Bean集合 * C:BaseAdapter適配器——繼承BaseAdapter的其子類 * 2旨剥、初始化數(shù)據(jù)——setData() * 3、初始化試圖——setView() * a.指定要設(shè)置的ListView對象 * b.new一個適配器 * 設(shè)置適配器各個參數(shù)和方法 * c.關(guān)聯(lián)適配器 * * @author Administrator * */ public class MainActivity extends Activity { //V結(jié)構(gòu)——控制顯示 ListView mlvGeneral; //M結(jié)構(gòu)——把將軍圖片地址和將軍名字封裝起來 ArrayList
mGenerals;
//C結(jié)構(gòu)——繼承Baseadapter類的適配器
GeneralAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化數(shù)據(jù)——名字?jǐn)?shù)據(jù)浅缸,圖片地址數(shù)據(jù)
initData();
initView();
}
/**初始化數(shù)據(jù)
* 1轨帜、獲取名字?jǐn)?shù)組
* 2、獲取圖片地址數(shù)組
*/
private void initData() {
//獲取名字?jǐn)?shù)組
String[] names = getResources().getStringArray(R.array.generals);
int[] photoIds={
R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
R.drawable.zhuyuanzhang
};
//獲取圖片地址數(shù)組
mGenerals=new ArrayList();
for (int i = 0; i < photoIds.length; i++) {
GeneralBean general=new GeneralBean(photoIds[i], names[i]);
mGenerals.add(general);
}
}
/**初始化視圖
*
*/
private void initView() {
//指定初始化的ListView
mlvGeneral=(ListView) findViewById(R.id.lvGeneral);
//初始化適配器
mAdapter=new GeneralAdapter(mGenerals, this);
//關(guān)聯(lián)適配器
mlvGeneral.setAdapter(mAdapter);
}
/**適配器
*1衩椒、聲明兩個成員變量——Context蚌父,Bean容器
*2、重寫4個主要方法
* getCount()——決定Item的個數(shù)
* getItem()——設(shè)置Item布局毛萌,即一個Item是如何顯示
* getItemId()——獲取每個設(shè)置好的Item的Id
* getView()——設(shè)置整個ListView的顯示
* @author Administrator
*/
class GeneralAdapter extends BaseAdapter{
ArrayList generals;
Context context;
public GeneralAdapter(ArrayList generals, Context context) {
super();
this.generals = generals;
this.context = context;
}
/**決定position總數(shù)——即獲取一共有多少個Item顯示
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount() {
return generals.size();
}
/**返回對應(yīng)的bean給予回調(diào)設(shè)置bean在Item的參數(shù)
* @see android.widget.Adapter#getItem(int)
*/
@Override
public GeneralBean getItem(int position) {
return generals.get(position);
}
/**返回當(dāng)前的ItemId
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position) {
return position;
}
/**控制顯示的視圖——通過設(shè)置好單個行布局然后遞歸回調(diào)執(zhí)行完所有的Item苟弛,完成整個ListView的顯示
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//創(chuàng)建代表當(dāng)前列表項的行布局
View layout = View.inflate(context, R.layout.item_general, null);
//從行布局中找到并創(chuàng)建顯示頭像和人名的兩個View
ImageView ivPhoto=(ImageView) layout.findViewById(R.id.ivPhoto);
TextView tvName=(TextView) layout.findViewById(R.id.tvName);
//獲取當(dāng)前的軍事家對象
GeneralBean general = getItem(position);
//設(shè)置當(dāng)前行布局的ImageView的顯示圖片屬性
ivPhoto.setImageResource(general.getPhotoId());
//設(shè)置當(dāng)前行布局的TextView的顯示信息
tvName.setText(general.getName());
//返回當(dāng)前設(shè)置好的行布局對象
return layout;
}
}
}