您的位置:首页 > 其它

适配器Adapter

2015-10-10 14:02 288 查看
Adapter:用来填充数据的中间桥梁,-----ListView / GridView / Spinner / ViewPager/AutoCompleteTextView/(有子列表的都可以设置)

PagerAdapter : ViewPage

new Adapter(Context context,int item_layout,dataBase);

ArrayAdapter -----适用于数据源单一的数组,String[] / int [] /....

SimpleAdapter----适用于数据源相对较少的集合, List<HashMap<key,value>>

SimpleAdapter adapter = new SimpleAdapter(context, data, resource, from, to);//data:list<map>数据源,int resource,布局资源 (可是自定义)String[] from -data-map里标的签,int[] to,相应的控件id

自定义适配器

extends BaseAdapter ------数据源为自定义对象的数据源时,需要自定义一个适配器继承于他

要重写以下四个方法

public int getCount() {}

public Object getItem(int position) {}

public long getItemId(int position) {}

public View getView(int position, View convertView, ViewGroup parent) {}

package com.scxh.android.listview;
import java.util.ArrayList;
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 com.scxh.android.frame.R;

public class MyBaseAdapter extends BaseAdapter {
private ArrayList<User> list = new ArrayList<User>();// 初始化目的避免网络延迟造成的空指针
private LayoutInflater inflater;

public MyBaseAdapter(Context context) {
inflater = LayoutInflater.from(context);
}

public void setData(ArrayList<User> list) {// 设置数据源
this.list = list;
notifyDataSetChanged();// 数据更新
}

@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) {
ItemWidget widget;// 内部类,里面是自定义布局的控件

if (convertView == null) {// 一优化,避免重复加载,浪费资源
convertView = inflater.inflate(R.layout.mybaseadapter_item_layout,
null);
widget = new ItemWidget();
widget.icon = (ImageView) convertView
.findViewById(R.id.mybaseadapter_item_img);
widget.title = (TextView) convertView
.findViewById(R.id.mybaseadapter_item_title);
widget.content = (TextView) convertView
.findViewById(R.id.mybaseadapter_item_content);
convertView.setTag(widget);

} else {
widget = (ItemWidget) convertView.getTag();
}

//将User里的值取出来
User user = (User) getItem(position);
int id = user.getmId();
String userName = user.getmUserName();
String introduce = user.getmIntroduce();
//赋给控件
widget.icon.setImageResource(id);
widget.title.setText(userName);
widget.content.setText(introduce);

return convertView;
}

public class ItemWidget {
ImageView icon;
TextView title;
TextView content;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: