步骤一:创建一个布局文件,对Item控件进行布局
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listView"></ListView>
步骤二:在对应的Activity中添加ListView控件
private ListView mlistView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mlistView= (ListView) findViewById(R.id.listView);
步骤三:声明属性,并进行初始化
//以上三步在ArrayAdapter和SimpleAdapter用法一致
public class Myadapter extends BaseAdapter { //4.1.声明属性, 保存数据和上下文 private List<News> list; private Context context; public Myadapter(Context context, List<News> list) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override // 获取Item的id public long getItemId(int position) { return position; } @Override //获取position对应位置的视图 public View getView(int position, View view, ViewGroup viewGroup) { ViewHolder holder; if (view == null) { //将指定的布局文件转换成视图对象 //这里是缓存的界面控制 view = View.inflate(context, R.layout.item_layout, null); holder = new ViewHolder(); holder.imageView = (ImageView) view.findViewById(R.id.image); holder.titleView = (TextView) view.findViewById(R.id.text1); holder.infoView = (TextView) view.findViewById(R.id.text2); view.setTag(holder); News news = (News) getItem(position); holder.imageView.setBackgroundResource(news.getImg()); holder.titleView.setText(news.getTitle().toString()); holder.infoView.setText(news.getInfo().toString()); }else{ holder= (ViewHolder) view.getTag(); } return view; } }
步骤四:创建一个类,继承自BaseAdapter
在这里,我们将数据id都整理到<News>类中,并初始化赋值方法
public class News { //存放图片,资源都是采用id的形式 private int img; private String title; private String info; //初始化赋值方法 public News(int img,String title,String info){ this.img=img; this.title=title; this.info=info; } public String getInfo() { return info; } public String getTitle() { return title; } public int getImg() { return img; } public void setImg(int img) { this.img = img; } public void setTitle(String title) { this.title = title; } public void setInfo(String info) { this.info = info; } }将所有控件也打包到ViewHolder中
public class ViewHolder { public ImageView imageView; public TextView titleView; public TextView infoView; }
步骤五:创建adapter并进行绑定
Myadapter adapter=new Myadapter(this,getData()); mlistView.setAdapter(adapter); } private List<News> getData(){ List<News> list=new ArrayList<>(); News new1=new News(R.drawable.picture,"我是标签1","我是标签2"); list.add(new1); return list;完成以上并运。