我能够看到带有复选框和空白框的gridview。我不明白为什么图片没有设置到框中。
我的imageAdapter getView()方法代码如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG, "getView Position " + position + " devicePhoto " + images.get(position).photoID);
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
//View rowView = inflater.inflate(R.layout.articles_list_row, parent, false);
convertView = inflater.inflate(R.layout.fragment_photo, parent, false);
holder.imageview = (SnapFullSizeImageView) convertView.findViewById(R.id.imageView);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.grid_item_checkbox);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.checkbox.setId(position);
holder.imageview.setId(position);
holder.checkbox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
int id = cb.getId();
if (thumbnailsselection[id]) {
thumbnailsselection[id] = false;
} else {
cb.setChecked(true);
thumbnailsselection[id] = true;
}
}
});
if (holder.imageview.getLayoutParams().height != mItemHeight) {
holder.imageview.setLayoutParams(new FrameLayout.LayoutParams(GridView.LayoutParams.MATCH_PARENT, GridView.LayoutParams.MATCH_PARENT));
}
if(thumbnailsselection.length >0){
holder.checkbox.setChecked(thumbnailsselection[position]);
}
holder.id = position;
holder.imageview.setImageResource(position);
holder.imageview.setDevicePhoto(images.get(position));
return convertView;
}
接下来我的活动页面:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
Bundle bundle = this.getArguments();
String sGallery = bundle.getString("gallery");
View inflatedView = inflater.inflate(R.layout.fragment_picture_grid, container, false);
GridView gridView = (GridView) inflatedView.findViewById(R.id.gridview);
this.myImageAdapater = new DeviceImageAdapter(this.getActivity(), bundle.getString("id"), bundle.getString("name"), sGallery, this, gridView, bundle.getInt("parentPosition"));
mGridView = gridView;
setToGrid(this, gridView);
return inflatedView;
}
public void setToGrid(final PictureGridFragment pictureGridFragment, final GridView gridView) {
gridView.setAdapter(pictureGridFragment.myImageAdapater);
Log.i(TAG, "setToGrid");
gridView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onGlobalLayout() {
if (pictureGridFragment.myImageAdapater.getNumColumns() == 0) {
final int numColumns = (int) Math.floor(
gridView.getWidth() / (getResources().getDimensionPixelSize(R.dimen.image_thumbnail_size) + getResources().getDimensionPixelSize(R.dimen.image_thumbnail_spacing)));
if (numColumns > 0) {
final int columnWidth =
(gridView.getWidth() / numColumns) - getResources().getDimensionPixelSize(R.dimen.image_thumbnail_spacing);
pictureGridFragment.myImageAdapater.setNumColumns(numColumns);
pictureGridFragment.myImageAdapater.setItemHeight(columnWidth);
if (BuildConfig.DEBUG) {
Log.d(TAG, "onCreateView - numColumns set to " + numColumns);
}
gridView.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
}
}
}
});
}