在移动端的开发过程中,数据解析是比较常见的一块内容,特别是列表,习惯写个adapter,把数据扔到里面,从以前的项目中抽取了一个adapter的最简单的格式,希望对大家有所帮助。
直接上代码:
/**
* 功能:Adapter的一般格式(从项目中获取百度地图的位置抽取出来的一个例子)
* @author yinguichun
* @date 2016-08-22
*
*/
public class LocationAdapter extends BaseAdapter {
/** 附近位置集合,从Activity页面传递过来的数据 */
private List<Address> list = new ArrayList<Address>();
/** 视图容器 */
private LayoutInflater inflater;
/** 缓存子控件 */
private ViewHolder holder;
/** 继承上下文 */
private Context mContext;
public LocationAdapter(Context context, ArrayList<Address> list) {//此处的list是接受Activity传递的list集合
// TODO Auto-generated constructor stub
this.mContext = context;
this.list = list;
inflater = LayoutInflater.from(context);
}
public class ViewHolder {
private TextView tv_location;//Adapter布局中的一个TextView
}
/**
* 获得传递集合的所有列数
* @return list集合的长度
*/
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
/**
* 获取list集合的每一个Item
* @param position Item的位置
* @return 集合的位置
*/
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@SuppressLint("ResourceAsColor")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
holder = new ViewHolder();
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_location, null);
holder.tv_location = (TextView) convertView
.findViewById(R.id.tv_location);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv_location.setText(list.get(position).getAddress());//给TextView设置值
/**
* 每个Item的点击事件
*/
holder.tv_location.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("address", list.get(position).getAddress());
intent.setClass(mContext, TravelWritingActivity.class);
mContext.startActivity(intent);
}
});
return convertView;
}
}