- 自定义适配器,通常通过继承BaseAdapter来构建适配器,因为BaseAdapter又是实现了ListAdapter和SpinnerAdapter两个接口.因此可以使用在ListView和spinner两个控件上,gridView继承absListView,所以也可以使用BaseAdapter来时适配.
其中contenView若每次都定义一次来加载布局就非常的繁琐,因此要不断的使用已经存在的contentView.
所以对contentView的存在进行判定。
- 普通正确方法:
getView(int position, View contenView,ViewGroup parent ){if(contenView==null){contentView=myinflater,inflate(R.layout.xxx,parent,null);}((TextView)contentView.findViewById(R.id.XX)).setText(Data[position]);}
- 效率最高的方法:采用ViewHoder;
定义一个ViewHoder;
static ViewHoder{ImageView imageView;TextView texViewt;}
getView(int position ){ViewHoder hoder;if(contentView==null){contenView=myinflate.inflate(R.layout.XX,parent,null);hold = new ViewHold;hold.text=(TextView)findViewById(R.id.XX);hold.iamgeView=(IamgeView)findViewById(R.id.XX);contetViewSetTag(hold);}else{hold= (VieHold)contentView.getTag();}hold.text.settext(Data[position]);}
- 当处理一些耗时的资源加载的时候需要做到以下几点,以使你的加载更快更平滑:
1. 适配器在界面主线程中进行修改
2. 可以在任何地方获取数据但应该在另外一个地方请求数据
3. 在主界面的线程中提交适配器的变化并调用notifyDataSetChanged()方法
对gridview控件的View对象分别进行监听,采用OnItemClickListener();