1:自定义GridView
public class NineGridlayout extends ViewGroup {
private NineGridAdapter adapter;
private OnItemClickListerner onItemClickListerner;
// 行间距
private int lineSpace;
//列间距
private int gap;
private final int DEFAULT_WIDTH = 140;
private int columns;//
private int rows;//
private int totalWidth;
private Context context;
int singleWidth = 0, singleHeight = 0;
private int defaultWidth, defaultHeight;
private int oldCount;
public NineGridlayout(Context context) {
this(context, null);
}
public NineGridlayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public NineGridlayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
gap = dip2px(context, 10);
lineSpace = dip2px(context,10);
defaultWidth = defaultHeight = dip2px(context, DEFAULT_WIDTH);
}
public void setDefaultWidth(int defaultWidth) {
this.defaultWidth = defaultWidth;
}
public void setDefaultHeight(int defaultHeight) {
this.defaultHeight = defaultHeight;
}
public void setAdapter(NineGridAdapter adapter) {
this.adapter = adapter;
if (adapter == null) {
return;
}
//初始化布局形状
generateChildrenLayout(adapter.getCount());
//这里做一个重用view的处理
// if (oldCount == 0) {
removeAllViews();
for (int i = 0; i < adapter.getCount(); i++) {
View itemView = adapter.getView(i, null);
addView(itemView, generateDefaultLayoutParams());
}
// }
/*else {
//以前添加过view
int newViewCount = adapter.getCount();
if (oldCount > newViewCount) {
removeViews(newViewCount - 1, oldCount - newViewCount);