1
This commit is contained in:
@@ -11,6 +11,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -32,7 +33,7 @@ public class NineGridView extends ViewGroup {
|
||||
private int gridWidth; // 宫格宽度
|
||||
private int gridHeight; // 宫格高度
|
||||
|
||||
private List<ImageView> imageViews;
|
||||
private List<NineGridViewWrapper> imageViews;
|
||||
private List<ImageInfo> mImageInfo;
|
||||
private NineGridViewAdapter mAdapter;
|
||||
|
||||
@@ -94,8 +95,8 @@ public class NineGridView extends ViewGroup {
|
||||
if (mImageInfo == null) return;
|
||||
int childrenCount = mImageInfo.size();
|
||||
for (int i = 0; i < childrenCount; i++) {
|
||||
ImageView childrenView = (ImageView) getChildAt(i);
|
||||
|
||||
NineGridViewWrapper childrenView = (NineGridViewWrapper) getChildAt(i);
|
||||
|
||||
int rowNum = i / columnCount;
|
||||
int columnNum = i % columnCount;
|
||||
int left = (gridWidth + gridSpacing) * columnNum + getPaddingLeft();
|
||||
@@ -103,14 +104,17 @@ public class NineGridView extends ViewGroup {
|
||||
int right = left + gridWidth;
|
||||
int bottom = top + gridHeight;
|
||||
childrenView.layout(left, top, right, bottom);
|
||||
|
||||
|
||||
if (mImageLoader != null) {
|
||||
childrenView.setType(mImageInfo.get(i).type);
|
||||
mImageLoader.onDisplayImage(getContext(), childrenView, mImageInfo.get(i).thumbnailUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** 设置适配器 */
|
||||
/**
|
||||
* 设置适配器
|
||||
*/
|
||||
public void setAdapter(@NonNull NineGridViewAdapter adapter) {
|
||||
mAdapter = adapter;
|
||||
List<ImageInfo> imageInfo = adapter.getImageInfo();
|
||||
@@ -160,24 +164,27 @@ public class NineGridView extends ViewGroup {
|
||||
}
|
||||
}
|
||||
//修改最后一个条目,决定是否显示更多
|
||||
if (adapter.getImageInfo().size() > maxImageSize) {
|
||||
View child = getChildAt(maxImageSize - 1);
|
||||
if (child instanceof NineGridViewWrapper) {
|
||||
NineGridViewWrapper imageView = (NineGridViewWrapper) child;
|
||||
imageView.setMoreNum(adapter.getImageInfo().size() - maxImageSize);
|
||||
}
|
||||
}
|
||||
// if (adapter.getImageInfo().size() > maxImageSize) {
|
||||
// View child = getChildAt(maxImageSize - 1);
|
||||
// if (child instanceof NineGridViewWrapper) {
|
||||
// NineGridViewWrapper imageView = (NineGridViewWrapper) child;
|
||||
// imageView.setMoreNum(adapter.getImageInfo().size() - maxImageSize);
|
||||
// }
|
||||
// }
|
||||
|
||||
mImageInfo = imageInfo;
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
/** 获得 ImageView 保证了 ImageView 的重用 */
|
||||
private ImageView getImageView(final int position) {
|
||||
ImageView imageView;
|
||||
/**
|
||||
* 获得 ImageView 保证了 ImageView 的重用
|
||||
*/
|
||||
private NineGridViewWrapper getImageView(final int position) {
|
||||
NineGridViewWrapper imageView;
|
||||
if (position < imageViews.size()) {
|
||||
imageView = imageViews.get(position);
|
||||
} else {
|
||||
imageView = mAdapter.generateImageView(getContext());
|
||||
imageView = mAdapter.generateImageView(getContext(), mAdapter.getImageInfo().get(position).getType());
|
||||
imageView.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
@@ -189,22 +196,30 @@ public class NineGridView extends ViewGroup {
|
||||
return imageView;
|
||||
}
|
||||
|
||||
/** 设置宫格间距 */
|
||||
/**
|
||||
* 设置宫格间距
|
||||
*/
|
||||
public void setGridSpacing(int spacing) {
|
||||
gridSpacing = spacing;
|
||||
}
|
||||
|
||||
/** 设置只有一张图片时的宽 */
|
||||
/**
|
||||
* 设置只有一张图片时的宽
|
||||
*/
|
||||
public void setSingleImageSize(int maxImageSize) {
|
||||
singleImageSize = maxImageSize;
|
||||
}
|
||||
|
||||
/** 设置只有一张图片时的宽高比 */
|
||||
/**
|
||||
* 设置只有一张图片时的宽高比
|
||||
*/
|
||||
public void setSingleImageRatio(float ratio) {
|
||||
singleImageRatio = ratio;
|
||||
}
|
||||
|
||||
/** 设置最大图片数 */
|
||||
/**
|
||||
* 设置最大图片数
|
||||
*/
|
||||
public void setMaxSize(int maxSize) {
|
||||
maxImageSize = maxSize;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user