第一次用到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; } }); }
目前先做这样简单的记录,等待项目结束,再仔细研究具体的加载过程。