例子效果:
这个例子里除了用了gridview还加了选中加蒙版和点击图片被选中。
代码:
Fruit
package com.example.administrator.mygridview;
/**
* Created by Administrator on 2015/8/26.
*/
public class Fruit {
private String name;
private int img;
public Fruit(String name,int img){
this.name=name;
this.img=img;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
}
FruitAdapter
package com.example.administrator.mygridview;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
/**
* Created by Administrator on 2015/8/26.
*/
public class FruitAdapter extends BaseAdapter {
private List<Fruit> mFruits;
private LayoutInflater mInflater;
private boolean[] mMangerCheckBox;
public FruitAdapter(LayoutInflater inflater, List<Fruit> date) {
//将inflater
mInflater = inflater;
mFruits = date;
mMangerCheckBox=new boolean[date.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) {
ViewHolder vh=null;
if(convertView==null){
convertView=mInflater.inflate(R.layout.fruit_gridview_activity,null);
vh=new ViewHolder();
vh.textview_name= (TextView) convertView.findViewById(R.id.textview_name);
vh.imageview= (ImageView) convertView.findViewById(R.id.imageview);
vh.imageview_tint= (ImageView) convertView.findViewById(R.id.imageview_tint);
vh.checkbox= (CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(vh);
}else {
vh= (ViewHolder) convertView.getTag();
}
Fruit fruit =mFruits.get(position);
vh.textview_name.setText(fruit.getName());
vh.imageview.setImageResource(fruit.getImg());
vh.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mMangerCheckBox[position]=isChecked;
notifyDataSetChanged();
}
});
vh.checkbox.setChecked(mMangerCheckBox[position]);
if (mMangerCheckBox[position]){
vh.imageview_tint.setVisibility(View.VISIBLE);
}else {
vh.imageview_tint.setVisibility(View.INVISIBLE);
}
return convertView;
}
class ViewHolder{
TextView textview_name;
ImageView imageview;
ImageView imageview_tint;
CheckBox checkbox;
}
public void itemSelect(int position){
mMangerCheckBox[position]=!mMangerCheckBox[position];
notifyDataSetChanged();
}
}
MainActivity
package com.example.administrator.mygridview;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private GridView mgridView;
private List<Fruit> mFruits;
private FruitAdapter mAdapter;
private LayoutInflater mInflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mgridView = (GridView) findViewById(R.id.gridview);
mInflater = getLayoutInflater();
initData();
mAdapter = new FruitAdapter(mInflater, mFruits);
mgridView.setAdapter(mAdapter);
mgridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mAdapter.itemSelect(position);
}
});
}
private void initData() {
mFruits = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Fruit apple = new Fruit("苹果", R.mipmap.apple);
Fruit caomei = new Fruit("草莓", R.mipmap.caomei);
Fruit lizhi = new Fruit("荔枝", R.mipmap.lizhi);
Fruit cherry = new Fruit("樱桃", R.mipmap.cherry);
mFruits.add(apple);
mFruits.add(caomei);
mFruits.add(lizhi);
mFruits.add(cherry);
}
}
}