初学ListView和Adapter的分析和总结

先了解ListView:用于以列表的形式显示数据,主要采用mvc模式,Listview在装载数据时并不是直接使用ListView类的add或者类似的方法进行添加,而是通过Adapter对象来实现。

Adapter :适配器        要自定义一个适配器必须extends BaseAdapter 

      主要方法: 1.getCount()   当前你的数据的长度

   2.getItem()  获得当前每一条数据的Item

   3.getItemId() 获得每一条数据的Id

   4.getView() 加载视图

MyAdapter.java

package com.example.androidtest;


import java.util.List;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
//继承BaseAdapter
public class MyAdapter extends BaseAdapter{
	 
	private LayoutInflater mLayoutInflater;
	//定义数据和承接上下文的参数
	private Context mConext;
	private List<String> mData;
	//构造函数引入两个参数
	public  MyAdapter(Context mConext , List<String> mData){
		mLayoutInflater = LayoutInflater.from(mConext);
		this.mConext = mConext;
		this.mData = mData;
		
	}


	@Override
	public int getCount() {
		//数据不为空则返回数据的大小
		return (mData == null) ? 0 : mData.size();
	}


	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		//返回数据
		return mData.get(position);
	}


	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		//返回数据的地址
		return position;
	}


	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		//可以直接调用tv_title
		ViewHolder holder;
		//如果convertView为空,则建立视图
		if (convertView == null) {
			holder = new ViewHolder();
			//使用inFlater方法来加载一个布局,用于ListViw的每一个Item的布局
			convertView = mLayoutInflater.inflate(R.layout.cell, parent, false);
			//用convertView来找到tv_title的Id
			holder.tv_title = (TextView) convertView.findViewById(R.id.tv_title);
			//holder.tv = (TextView) convertView.findViewById(R.id.tv);
			
			convertView.setTag(holder);
			//convertView.setTag(holder);
			
			
		}
		else{
			holder = (ViewHolder) convertView.getTag();
			//holder = (ViewHolder) convertView.getTag();
		}
		holder.tv_title.setText(mData.get(position));
		return convertView;
	}
	
	class ViewHolder{
		private TextView tv_title;
	}


}


发布了8 篇原创文章 · 获赞 1 · 访问量 3144
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览