private GridView gd;
private List<Picture> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
processData();
}
private void initView() {
gd = (GridView) findViewById(R.id.gd);
}
private void initData() {
list = new ArrayList<Picture>();
// 只能有7张图片,再多就oom了,下次解决图片过多oom的问题
list.add(new Picture(R.drawable.iv1));
list.add(new Picture(R.drawable.iv2));
list.add(new Picture(R.drawable.iv3));
list.add(new Picture(R.drawable.iv4));
list.add(new Picture(R.drawable.iv5));
list.add(new Picture(R.drawable.iv6));
list.add(new Picture(R.drawable.iv7));
}
private void processData() {
MyAdapter myAdapter = new MyAdapter(getApplication(), list);
gd.setAdapter(myAdapter);
}
}
**MyAdapter**
public class MyAdapter extends BaseAdapter {
private Context context;
private List<Picture> list;
public MyAdapter(Context context, List list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
if (convertView == null) {
// 复用历史缓存对象
convertView = View.inflate(context, R.layout.item_grid, null);
}
holder.iv_icon = (ImageView) convertView.findViewById(R.id.iv_icon);
Picture picture = list.get(position);
holder.iv_icon.setBackgroundResource(picture.getRes());
return convertView;
}
/**
* 减少findViewById次数
*/
private class ViewHolder {
ImageView iv_icon;
}
}
**JavaBean**
public class Picture {
private int res;
public Picture(int res) {
super();
this.res = res;
}
public int getRes() {
return res;
}
public void setRes(int res) {
this.res = res;
}
}
**_布局文件_**
<RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.gridviewDemo.MainActivity" >
<GridView
android:id="@+id/gd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="3" >
</GridView>