BaseAdapter的使用

总觉得在这几个adapter里面,BaseAdapter是最重要的,因为他可以适应所有的模式

1.写一个类继承BaseAdapter

重写里面的方法,其中 getCount() 和getView(int arg0, View arg1, ViewGroup arg2)必须重写:

public int getCount() {
return 0;
//必须重写,不能返回0.否则没有数据
}
public Object getItem(int arg0) {
return null;
}
public long getItemId(int arg0) {
return 0;
}
public View getView(int arg0, View arg1, ViewGroup arg2) {
return null;
}


2.声明视图容器

LayoutInflater  inflater=null

视图容器是在构造方法里通过inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);创建的。

在getview里通过convertView=inflater.inflate(R.layout.girdviewnull);获取list_item布局文件的视图 。

这里有两个视图,一个是包含listview控件的主视图,另一个是list_item显示的方式。

下面是例子:

package com.example.list;
 
import java.util.ArrayList;
import java.util.HashMap;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
 
public class ListViewActivity extends Activity {
//声明ListView
ListView listView;
//声明 MyAdapter 
MyAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //显示主视图
setContentView(R.layout.listviewlayout);
//初始化listView
listview=(ListView)findViewById(R.id.cities_listView);
//获取数据
ArrayList<HashMap<String,Object>> list=getData();
//初始化adapter(调用的构造方法)
adapter=new MyAdapter(list);
//将适配器设置到listview
listview.setAdapter(adapter);
}
//获取数据的方法
private ArrayList<HashMap<String, Object>> getData() {
ArrayList<HashMap<String, Object>> list=new ArrayList<HashMap<String,Object>>();
for(int i=0;i<10;i++){
HashMap<String, Object> map=new HashMap<String, Object>();
map.put("personImage", R.drawable.ic_launcher);
map.put("personName", "刘关星");
map.put("personCode", "123");
list.add(map);
}
return list;
}
 
//建立一个新类继承BaseAdapter
class MyAdapter extends BaseAdapter{
private ArrayList<HashMap<String,Object>> list;
//视图容器
private LayoutInflater inflater;
//构造方法
public MyAdapter(ArrayList<HashMap<String,Object>> list){
this.list=list;
//得到inflater第一种方法
this.inflater=getLayoutInflater();
//得到inflater第二种方法
inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
//必须重写,默认返回的是0
@Override
public int getCount() {
return list.size();
}
 
@Override
public Object getItem(int position) {
return list.get(position);
}
 
@Override
public long getItemId(int position) {
return position;
}
 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
HashMap<String, Object> person_map=list.get(position);
ViewHolder holder=null;
if(convertView==null){
//这里将list_item的视图通过inflater得到并给了converview
convertView=inflater.inflate(R.layout.list_item,null);
holder=new ViewHolder();
//找到id
holder.image=(ImageView) convertView.findViewById(R.id.person_image);
holder.name_text=(TextView) convertView.findViewById(R.id.person_name);
holder.code_text=(TextView) convertView.findViewById(R.id.person_code);
holder.persondelete_btn=(Button) convertView.findViewById(R.id.pesondelete_btn);
convertView.setTag(holder);
}else{
//直接得到下一个控件集
holder=(ViewHolder) convertView.getTag();
}
//赋值
holder.image.setImageResource((Integer)person_map.get("personImage"));
holder.name_text.setText((String)person_map.get("personName"));
holder.code_text.setText((String)person_map.get("personCode"));
holder.persondelete_btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
System.out.println("++");
}
});
return convertView;
}
}
//自定义的ViewHolder
static class ViewHolder{
ImageView image;
TextView name_text;
TextView code_text;
Button persondelete_btn;
}
}


 

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值