自己對(duì)ListView的Adapter理解——Android學(xué)習(xí)

????? 由于小弟初到貴境,人生路不熟,而對(duì)于簡(jiǎn)書文章編輯器發(fā)代碼的操作更是頭疼,不知道怎么很好的把java代碼呈現(xiàn)出來,就直接上圖了。后接代碼,供學(xué)習(xí)。要拿的話,自己扒走貼上,格式化一下就O了

????? 我是一個(gè)安卓小白,在學(xué)的過程中把自己的理解給分享上來,希望有人高人指點(diǎn)指點(diǎn),大家交流交流哈 ! ^ ^


/**ListView的Adapter應(yīng)用 * 1、使用MVC設(shè)計(jì)模式 * M:ListView——Item集合 * V:集合——Bean集合 * C:BaseAdapter適配器——繼承BaseAdapter的其子類 * 2、初始化數(shù)據(jù)——setData() * 3、初始化試圖——setView() * a.指定要設(shè)置的ListView對(duì)象 * b.new一個(gè)適配器 * 設(shè)置適配器各個(gè)參數(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、聲明兩個(gè)成員變量——Context,Bean容器 *2、重寫4個(gè)主要方法 * getCount()——決定Item的個(gè)數(shù) * getItem()——設(shè)置Item布局,即一個(gè)Item是如何顯示 * getItemId()——獲取每個(gè)設(shè)置好的Item的Id * getView()——設(shè)置整個(gè)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ù)——即獲取一共有多少個(gè)Item顯示 * @see android.widget.Adapter#getCount() */ @Override public int getCount() { return generals.size(); } /**返回對(duì)應(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è)置好單個(gè)行布局然后遞歸回調(diào)執(zhí)行完所有的Item,完成整個(gè)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)前列表項(xiàng)的行布局 View layout = View.inflate(context, R.layout.item_general, null); //從行布局中找到并創(chuàng)建顯示頭像和人名的兩個(gè)View ImageView ivPhoto=(ImageView) layout.findViewById(R.id.ivPhoto); TextView tvName=(TextView) layout.findViewById(R.id.tvName); //獲取當(dāng)前的軍事家對(duì)象 GeneralBean general = getItem(position); //設(shè)置當(dāng)前行布局的ImageView的顯示圖片屬性 ivPhoto.setImageResource(general.getPhotoId()); //設(shè)置當(dāng)前行布局的TextView的顯示信息 tvName.setText(general.getName()); //返回當(dāng)前設(shè)置好的行布局對(duì)象 return layout; } } }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容