看来很多大神的,觉得他们写的都很好,为了加深理解,自己归纳下
搜先,适配器的简单实用
适配器(adapter)
相当与一个桥梁链接数据和显示控件,将数据配置到显示控件上
如将 String[] strs = {"基神","B神","翔神","曹神","J神"};
中的数据配置到ListView中
//生成中间桥梁
ArrayAdapter<string> adapter = new ArrayAdapter<string>
(this,android.R.layout.simple_expandable_list,strs);
//配置
list_test.setAdapter(adapter);
自定义baseadapter
注意点:
1、构造函数
构造函数中的两个变量就是baseadapter需要传递的变量
public MyAdapter(List<Map<String, Object>> datas, Context mContext) {
this.datas = datas;
this.mContext = mContext;
}
//调用
myAdapter = new MyAdapter(list, this);
2、 public View getView(int position, View convertView, ViewGroup parent) { }函数
这个涉及到的就比较复杂
参数说明:
public View getView(int position, View convertView, ViewGroup parent)
第一个参数position---该视图在适配器数据中的位置
第二个参数convertView---旧视图
第三个参数parent: 此视图最终会被附加到的父级视图
函数解释
/*converview相当于一个view控件的缓存装置,
它将我们定义好显示没一行item的布局文件压缩成一个视图,
布局中的部分view都在它里面。*/
//LayoutInflater来加载布局的 ,
调用它的inflate()方法来加载布局inflate()方法一般接收两个参数,
第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,
如果不需要就直接传null。*/
/*ViewHolder,里面的成员就是我们没一行item布局文件中的控件集合。*/
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
//控件不存在就加载,不然直接从converview里获取
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, parent, false);
holder = new ViewHolder();
holder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);
holder.txt_content = (TextView) convertView.findViewById(R.id.txt_content);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//重新设置变量
holder.img_icon.setImageResource(mData.get(position).getImgId());
holder.txt_content.setText(mData.get(position).getContent());
return convertView;
}
3、其他函数
@Override
public int getCount() {
// TODO Auto-generated method stub
return datas.size();// 返回数据的总数
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return datas.get(position);// 返回在list中指定位置的数据的内容
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;// 返回数据在list中所在的位置
}
代码
class MyAdapter extends BaseAdapter
{
private Context context;
public MyAdapter(Context context)
{
this.context = context;
}
@Override
publicint getCount() {
// How many items are in the data set represented by this Adapter.(在此适配器中所代表的数据集中的条目数)
return0;
}
@Override
public Object getItem(int position) {
// Get the data item associated with the specified position in the data set.(获取数据集中与指定索引对应的数据项)
returnnull;
}
@Override
publiclong getItemId(int position) {
// Get the row id associated with the specified position in the list.(取在列表中与指定索引对应的行id)
return0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get a View that displays the data at the specified position in the data set.
returnnull;
}
}
class MyAdapter extends BaseAdapter
{
private Context context;
public MyAdapter(Context context)
{
this.context = context;
}
@Override
public int getCount() {
// How many items are in the data set represented by this Adapter.(在此适配器中所代表的数据集中的条目数)
return 0;
}
@Override
public Object getItem(int position) {
// Get the data item associated with the specified position in the data set.(获取数据集中与指定索引对应的数据项)
return null;
}
@Override
public long getItemId(int position) {
// Get the row id associated with the specified position in the list.(取在列表中与指定索引对应的行id)
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get a View that displays the data at the specified position in the data set.
return null;
}
}