Android BaseAdapter记录

来源:互联网 发布:mac安装win7双系统 编辑:程序博客网 时间:2024/06/05 15:40



第一次用到BaseAdater的场景是产品列表,有标题还有显示的ICON。所以选择用GridView的模式。直接上代码:


private class CardGridViewAdapter extends BaseAdapter {    @Override    public int getCount() {        if (functions != null)            return functions.size();        return 0;    }    @Override    public Object getItem(int position) {        return functions.get(position);    }    @Override    public long getItemId(int position) {        return 0;    }    int lastPosition = -1;    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder;        if (convertView == null) {            convertView = LayoutInflater.from(mContext).inflate(R.layout.ebuy_item_gridview, null);            holder = new ViewHolder();            holder.tv = (TextView) convertView.findViewById(R.id.tv_main_title);            holder.imageView = (SimpleDraweeView) convertView.findViewById(R.id.iv_main_pic);            convertView.setTag(holder);        } else            holder = (ViewHolder) convertView.getTag();        if(position == 0 && lastPosition == 0){            return convertView;        }        lastPosition = position;        Function function = functions.get(position);        Log.e("DataController","function.title:"+function.title);        Log.e("DataController","function.defaultImage:"+function.getDefaultImage());        holder.tv.setText(function.title);        Uri uri = Uri.parse(function.getDefaultImage());        Log.e("DataController","url:"+uri.toString());        holder.imageView.setImageURI(uri);        int wide=UIUtils.getScreenWidth(mContext)/3 -10;        RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(wide,wide);        convertView.setLayoutParams(params);        convertView.setBackgroundColor(Color.parseColor("#ffffff"));        return convertView;    }}
private class ViewHolder {    TextView tv;    SimpleDraweeView imageView;}
BaseApdate主体部分是getView方法。
public View getView(int position, View convertView, ViewGroup parent)
这次的使用是将需要显示出来的产品通过ArrayList<>传进来,在BaseApdate上显示url对应的ICON和TITLE,并且响应点击事件。



 private  CardGridViewAdapter adapter ;    @Override    public void initData() {        adapter = new CardGridViewAdapter();        mGridView.setAdapter(adapter);        mGridView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if(event.getAction() == 0){                    gridViewSelect(v,event);                }else if(event.getAction() == 1 || event.getAction() == 3){                     gridViewSelectOut();                }                return false;            }        });        mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.e("DataController","---------setOnItemClickListener --------------"+position);                long currentTime=System.currentTimeMillis();                if(currentTime-lastClickTime<MIN_CLICK_DELAY_TIME){                    return;                }                lastClickTime=currentTime;                           }        });    }



目前先做这样简单的记录,等待项目结束,再仔细研究具体的加载过程。