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

2014-11-13  本文已影响0人  灬雲灬

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

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

/**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; } } }

上一篇下一篇

猜你喜欢

热点阅读