SimpleAdapter simpleAdapter = new SimpleAdapter(this, data,R.layout.image_second ,
new String[]{"imageView","title"}, new int[]{R.id.photo,R.id.text});
gridView.setAdapter(simpleAdapter);
本来如此设置十分方便,但是客户要求修改title的字体,所以只能使用ViewBinder绑定数据。
首先要初始化一个viewbinder。其中的setViewValue函数会根据deta的个数自动循环。
比如说,data中有4对imageview和title,那么setViewValue函数就会执行4*2=8次。第一次是第一个map的imageview,第二次是第一个map的title,以此类推。
所以在给控件赋值的时候判断一下这个数据是不是这个控件能用的就行了。
比如这里就是判断如果data1是数字的情况下,就给imageview赋值
如果不是那就是给title赋值。
SimpleAdapter simpleAdapter = new SimpleAdapter(this, data,R.layout.image_second ,
new String[]{"imageView","title"}, new int[]{R.id.photo,R.id.text});
ViewBinder bander = new ViewBinder() {
@Override
public boolean setViewValue(View view, Object data1,
String textRepresentation) {
// TODO Auto-generated method stub
LinearLayout layout = (LinearLayout)view.getParent();
ImageView img = (ImageView)layout.getChildAt(0);
TextView tv = (TextView)layout.getChildAt(1);
String a=data1.toString();
if(isNumeric(a))
{
img.setImageBitmap(readBitmap(Integer.parseInt(data1.toString())));
}
else
{
tv.setText(data1.toString());
}
tv.setTypeface(dsFontEN);
return true;
}
};
simpleAdapter.setViewBinder(bander);
gridView.setAdapter(simpleAdapter);