GridView(表格式布局)

来源:互联网 发布:szvre新域名 编辑:程序博客网 时间:2024/05/09 04:19
用法跟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 {
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);
}

model:Fruit代码
public class Fruit {
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;
}
}
自定义adapter代码
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;
}
}

0 0
原创粉丝点击