一.创建MyAdapter类,继承BaseAdapter
二.创建MyAdapter构造方法,从数据源中获取数据-数据源与数据适配器关联起来
三.改返回值,没有利用到ListView的缓存机制
package com.dream.myapplication; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by dream on 2016/1/19. */ public class MyAdapter extends BaseAdapter { private LayoutInflater mInflater; //数据源与数据适配器关联起来 private List<ItemBean> mlist; public MyAdapter(Context context,List<ItemBean>list){ mlist = list; //content->要使用当前Adapter的界面对象;mInflater->布局装载器对象 /* 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。 不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化; 而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入; 2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。 LayoutInflater 是一个抽象类,在文档中如下声明: public abstract class LayoutInflater extends Object 获得 LayoutInflater 实例的三种方式 1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater() 2. LayoutInflater inflater = LayoutInflater.from(context); 3. LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); */ mInflater = LayoutInflater.from(context); } @Override public int getCount() { //返回ListView需要显示的数据量 return mlist.size(); } @Override public Object getItem(int position) { //指定索引所对应的数据项 return mlist.get(position); } @Override public long getItemId(int position) { //返回指定索引所对应的数据项 return position; } @Override //返回每一项的显示内容 public View getView(int position, View convertView, ViewGroup parent) { //R.layout.item->需要装载到Item中的布局文件;Null通常都谢null 获取xml->Item View view = mInflater.inflate(R.layout.item,null); //获取控件 ImageView imageView = (ImageView) view.findViewById(R.id.tv_image); TextView title = (TextView) view.findViewById(R.id.tv_title); TextView content = (TextView) view.findViewById(R.id.tv_content); //从mlist数据源中将数据取出来,赋给三个控件 ItemBean bean = mlist.get(position); imageView.setImageResource(bean.ItemImageResId); title.setText(bean.ItemTitle); content.setText(bean.ItemContent); return view; } }
MyAdapter
四.通过调用ListView的setAdapt方法,将Adapter对象传递给ListView,完成数据源与适配器绑定
时间: 2024-10-21 08:47:33