android listview的理解,自己对ListView的Adapter理解——Android学习

本文介绍了Android中ListView的Adapter应用,通过MVC设计模式展示了如何初始化数据和视图。作者分享了如何创建自定义Adapter,包括设置数据、关联Adapter以及在ListView中显示Java代码。适合安卓开发初学者学习。
摘要由CSDN通过智能技术生成

由于小弟初到贵境,人生路不熟,而对于简书文章编辑器发代码的操作更是头疼,不知道怎么很好的把java代码呈现出来,就直接上图了。后接代码,供学习。要拿的话,自己扒走贴上,格式化一下就O了

我是一个安卓小白,在学的过程中把自己的理解给分享上来,希望有人高人指点指点,大家交流交流哈 ! ^ ^

4f2681c17642

/**ListView的Adapter应用

* 1、使用MVC设计模式

* M:ListView——Item集合

* V:集合——Bean集合

* C:BaseAdapter适配器——继承BaseAdapter的其子类

* 2、初始化数据——setData()

* 3、初始化试图——setView()

* a.指定要设置的ListView对象

* b.new一个适配器

* 设置适配器各个参数和方法

* c.关联适配器

*

* @author Administrator

*

*/

public class MainActivity extends Activity {

//V结构——控制显示

ListView mlvGeneral;

//M结构——把将军图片地址和将军名字封装起来

ArrayList

mGenerals;

//C结构——继承Baseadapter类的适配器

GeneralAdapter mAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化数据——名字数据,图片地址数据

initData();

initView();

}

/**初始化数据

* 1、获取名字数组

* 2、获取图片地址数组

*/

private void initData() {

//获取名字数组

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

};

//获取图片地址数组

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);

//关联适配器

mlvGeneral.setAdapter(mAdapter);

}

/**适配器

*1、声明两个成员变量——Context,Bean容器

*2、重写4个主要方法

*getCount()——决定Item的个数

*getItem()——设置Item布局,即一个Item是如何显示

*getItemId()——获取每个设置好的Item的Id

*getView()——设置整个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总数——即获取一共有多少个Item显示

* @see android.widget.Adapter#getCount()

*/

@Override

public int getCount() {

return generals.size();

}

/**返回对应的bean给予回调设置bean在Item的参数

* @see android.widget.Adapter#getItem(int)

*/

@Override

public GeneralBean getItem(int position) {

return generals.get(position);

}

/**返回当前的ItemId

* @see android.widget.Adapter#getItemId(int)

*/

@Override

public long getItemId(int position) {

return position;

}

/**控制显示的视图——通过设置好单个行布局然后递归回调执行完所有的Item,完成整个ListView的显示

* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)

*/

@Override

public View getView(int position, View convertView, ViewGroup parent) {

//创建代表当前列表项的行布局

View layout = View.inflate(context, R.layout.item_general, null);

//从行布局中找到并创建显示头像和人名的两个View

ImageView ivPhoto=(ImageView) layout.findViewById(R.id.ivPhoto);

TextView tvName=(TextView) layout.findViewById(R.id.tvName);

//获取当前的军事家对象

GeneralBean general = getItem(position);

//设置当前行布局的ImageView的显示图片属性

ivPhoto.setImageResource(general.getPhotoId());

//设置当前行布局的TextView的显示信息

tvName.setText(general.getName());

//返回当前设置好的行布局对象

return layout;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值