Android适配器之ArrayAdapterSimpleAdapter和BaseAdapter的简单用法
Posted YaoYong_BigData
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android适配器之ArrayAdapterSimpleAdapter和BaseAdapter的简单用法相关的知识,希望对你有一定的参考价值。
1.ArrayAdapter
只可以简单的显示一行文本
代码片段:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
R.layout.item,//只能有一个定义了id的TextView
data);//data既可以是数组,也可以是List集合
2.SimpleAdapter
SimpleAdapter是扩展性最好的适配器,可以定义各种你想要的布局,而且使用很方便
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
参数context:上下文,比如this。关联SimpleAdapter运行的视图上下文
参数data:Map列表,列表要显示的数据,这部分需要自己实现,如例子中的getData(),类型要与上面的一致,每条项目要与from中指定条目一致
参数resource:ListView单项布局文件的Id,这个布局就是你自定义的布局了,你想显示什么样子的布局都在这个布局中。这个布局中必须包括了to中定义的控件id
参数 from:一个被添加到Map上关联每一个项目列名称的列表,数组里面是列名称
参数 to:是一个int数组,数组里面的id是自定义布局中各个控件的id,需要与上面的from对应
代码片段:
List<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();;
for(int i =0; i < lengh; i++)
Map<String,Object> item = new HashMap<String,Object>();
item.put("image", R.drawable.portrait);
item.put("title", mListTitle[i]);
item.put("text", mListStr[i]);
mData.add(item);
SimpleAdapter adapter = new SimpleAdapter(
this,
mData,
R.layout.item,
new String[]"image","title","text",
new int[]R.id.image,R.id.title,R.id.text);
3.BaseAdapter
可以实现复杂的列表布局,由于BaseAdapter是一个抽象类,使用该类需要自己写一个适配器继承该类,
正是由于继承了该类,需要我们重写一些方法,让我们可以在代码里控制列表的样式,更加灵活。
代码片段:
private class MyListAdapter extends BaseAdapter
private Context mContext;
private int[] colors=new int[]0xff626569,0xff4f5257 ;
public MyListAdapter(Context context)
mContext=context;
@Override
public int getCount()
// TODO Auto-generated method stub
return mListText.length;
@Override
public Object getItem(int position)
// TODO Auto-generated method stub
return position;
@Override
public long getItemId(int position)
// TODO Auto-generated method stub
return position;
@Override
public View getView(int position, View convertView, ViewGroup parent)
ImageView image=null; //这些控件可以单独封装成一个类(Holder),便于优化
TextView title=null;
TextView content=null;
if(convertView==null)
convertView=LayoutInflater.from(mContext).inflate(R.layout.colorlist, null);
image=(ImageView) convertView.findViewById(R.id.color_image);
title=(TextView) convertView.findViewById(R.id.color_title);
content=(TextView) convertView.findViewById(R.id.color_text);
int colorPos=position%colors.length;
convertView.setBackgroundColor(colors[colorPos]);
title.setText(mListTitle[position]);
content.setText(mListText[position]);
image.setImageResource(R.drawable.portrait);
return convertView;
--------------------------下面样例列表页的控件单独封装成了一个类(Holder),便与优化-----
public class MyBaseAdapter extends BaseAdapter
private LayoutInflater mInflater;
public MyAdapter(Context context)
this.mInflater = LayoutInflater.from(context);
@Override
public int getCount()
// TODO Auto-generated method stub
return mData.size();
@Override
public Object getItem(int arg0)
// TODO Auto-generated method stub
return null;
@Override
public long getItemId(int arg0)
// TODO Auto-generated method stub
return 0;
@Override
public View getView(int position, View convertView, ViewGroup parent)
ViewHolder holder = null;
if (convertView == null)
holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.vlist2, null);
holder.img = (ImageView)convertView.findViewById(R.id.img);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.info = (TextView)convertView.findViewById(R.id.info);
holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
convertView.setTag(holder);
else
holder = (ViewHolder)convertView.getTag();
holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
holder.title.setText((String)mData.get(position).get("title"));
holder.info.setText((String)mData.get(position).get("info"));
//给每一个列表后面的按钮添加响应事件
holder.viewBtn.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
showInfo();
);
return convertView;
------------
public final class ViewHolder
public ImageView img;
public TextView title;
public TextView info;
public Button viewBtn;
以上是关于Android适配器之ArrayAdapterSimpleAdapter和BaseAdapter的简单用法的主要内容,如果未能解决你的问题,请参考以下文章
Android进阶之通用RecyclerView适配器打造方法
Android进阶之通用RecyclerView适配器打造方法
Android适配器之DataModifyHelper数据操作类的封装