用法跟listView区别不大,就是布局中多了一个属性
<GridView
android:id="@+id/gridview_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"></GridView>显示3排,效果:
Mainactivity代码
public class MainActivity extends Activity {model:Fruit代码
private List<Fruit> mFruits;
private GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView= (GridView) findViewById(R.id.gridview_photo);
LayoutInflater inflater=getLayoutInflater();
mFruits=new ArrayList<>();
for(int i=0;i<20;i++){
mFruits.add(new Fruit("苹果",R.mipmap.apple));
mFruits.add(new Fruit("草莓",R.mipmap.berry));
mFruits.add(new Fruit("橘子",R.mipmap.orange));
}
GridAdapter adapter = new GridAdapter(inflater, mFruits);
gridView.setAdapter(adapter);
}
public class Fruit {自定义adapter代码
private String name;
private int img;
private boolean[] mManagerAllCheckedBox;
public Fruit(String name, int img) {
this.name = name;
this.img = img;
}
public void setName(String name) {
this.name = name;
}
public void setImg(int img) {
this.img = img;
}
public int getImg() {
return img;
}
public String getName() {
return name;
}
}
public class GridAdapter extends BaseAdapter{
private LayoutInflater mInflater;
private List<Fruit> mFruits;
private boolean[] mManagerChecBox;
public GridAdapter(LayoutInflater mInflater, List<Fruit> mFruits) {
this.mInflater = mInflater;
this.mFruits = mFruits;
mManagerChecBox=new boolean[mFruits.size()];
}
@Override
public int getCount() {
return mFruits.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Fruit fruit= mFruits.get(position);
ViewHolder viewHolder=null;
if(convertView==null){
viewHolder=new ViewHolder();
convertView=mInflater.inflate(R.layout.item_grid,null);
viewHolder.imageView= (ImageView) convertView.findViewById(R.id.imgview_grid);
viewHolder.checkBox= (CheckBox) convertView.findViewById(R.id.checkbox_grid);
viewHolder.imageView_back= (ImageView) convertView.findViewById(R.id.imgview_background);
viewHolder.textView= (TextView) convertView.findViewById(R.id.textview_grid);
convertView.setTag(viewHolder);
}else{
viewHolder= (ViewHolder) convertView.getTag();
}
viewHolder.imageView.setImageResource(fruit.getImg());
viewHolder.textView.setText(fruit.getName());
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mManagerChecBox[position] = isChecked;
notifyDataSetChanged();
}
});
viewHolder.checkBox.setChecked(mManagerChecBox[position]);
if(mManagerChecBox[position]){
viewHolder.imageView_back.setVisibility(View.VISIBLE);
}else {
viewHolder.imageView_back.setVisibility(View.INVISIBLE);
}
return convertView;
}
class ViewHolder{
TextView textView;
ImageView imageView;
CheckBox checkBox;
ImageView imageView_back;
}
}