BaseAdapter 作为 ListView 适配器

ListView的填充需要一个adapter,它用来把数据映射到ListView中。以BaseAdapter作为其适配器为例。


BaseAdapter作为适配器使用相对较复杂,但它却能够实现多种列表布局。在BaseAdapter中需要重写一个类继承自BaseAdapter,并且重新实现里面的方法。例如自定义一个类MyAdapter。

public class MyAdapter extends BaseAdapter {
	
	private Context context; //声明一个上下文对象,后续的getView方法加载布局时需要
	
	public MyAdapter (Context context)  //通过构造方法传递上下文对象
	{
		this.context=context;
	}

	@Override
	public int getCount() {  //控制该Adapter包含列表项的个数
		return 0;
	}

	@Override
	public Object getItem(int position) {  //决定第position处的列表项内容
		return null;
	}

	@Override
	public long getItemId(int position) {  //决定第position处的列表项ID
		return 0;
	}

	@Override      //决定第position处的列表项组件
	public View getView(int position, View convertView, ViewGroup parent) {				
		return null;
	}
}


getView方法是重点,应当注意

@Override      //决定第position处的列表项组件
	public View getView(int position, View convertView, ViewGroup parent) {
		if(convertView==null) {
			convertView=LayoutInflater.from(context).inflate(R.layout.news_item,null);
		}
		
		
		/* 以下为在news_item布局中的控件*/
		TextView tvTitle=(TextView)convertView.findViewById(R.id.tvTitle);
		TextView tvDesc=(TextView)convertView.findViewById(R.id.tvDesc);
		TextView tvTime=(TextView)convertView.findViewById(R.id.tvTime);
		ImageView ivPic=(ImageView)convertView.findViewById(R.id.ivPic);
			
		return convertView;
	}
}


在activity文件中:

</pre><pre name="code" class="java">public class NewsActivity extends Activity {

	private ListView lvNews;
	private MyAdapter adapter;
		
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        lvNews=(ListView)findViewById(R.id.lvNews);
        adapter=new MyAdapter(this);
        
        lvNews.setAdapter(adapter);
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值