baseAdapter是一种最广泛使用的适配器,我是与一个listview关联,最重要的方法就是getCount和getView()
import java.util.List;
public class MyAdapter extends BaseAdapter {
//声明变量
private List<OrderDate> orList;
private LayoutInflater inflater;
Context context;
//重写构造函数
public MyAdapter(Context context,List<OrderDate> orderDates){
super();
this.context=context;
this.orList=orderDates;
this.inflater=LayoutInflater.from(context);
}
//返回item个数 这里就是list长度
public int getCount() {
return orList.size();
}
//对item进行取操作
public Object getItem(int position) {
return orList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder =null; //创建一个viewHolder 不用每次都进行findviewbyid
if(convertView==null){
holder=new ViewHolder();
convertView = inflater.inflate(R.layout.order_item, null); //根据布局文件做出视图文件,inflate 类似于findviewbyid 是用来实例化res和layout文件下的布局文件
holder.placeTextView=(TextView)convertView.findViewById(R.id.txt_place);
holder.timeTextView=(TextView)convertView.findViewById(R.id.txt_time);
holder.conditionTextView=(TextView)convertView.findViewById(R.id.txt_condition);
holder.imageButton=(ImageButton)convertView.findViewById(R.id.next);
convertView.setTag(holder);
}
else {
holder=(ViewHolder)convertView.getTag();
}
holder.placeTextView.setText(orList.get(position).placeString);
holder.timeTextView.setText(orList.get(position).timeString);
holder.conditionTextView.setText(orList.get(position).condetionString);
holder.imageButton.setFocusable(false);//这里设置imagebutton焦点是为了不覆盖listview的itemclick的监听事件
holder.imageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(context, OrderInfoActivity.class);
context.startActivity(intent);
}
});
return convertView;
}
public final class ViewHolder{
public TextView placeTextView;
public TextView timeTextView;
public TextView conditionTextView;
public ImageButton imageButton;
}
}