在 GridView 中设置图片 Uri
Setting image Uri in GridView
我正在尝试使用其 uri 将您手机图库中的图像添加到 gridView 中。
不幸的是,它什么也没做,我似乎找不到让它工作的方法。
我的适配器:
public class ImageGridAdapter extends BaseAdapter {
public Uri imageUri;
private Context mContext;
public ImageGridAdapter(Context c) {
this.mContext = c;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
imageUri = PictureGroupActivity.selectedImage;
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageURI(null);
imageView.setImageURI(imageUri);
return imageView;
}
}
适配器应该从 onActivtyResult 获取 imageUri:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
gridView = (GridView)findViewById(R.id.picture_group_gridView);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Toast.makeText(PictureGroupActivity.this, "selectedImage ma hodnotu: " + selectedImage, Toast.LENGTH_SHORT).show();
}
}
我已经在 activity 中的 onCreate 中设置了 gridView:
GridView gridView = (GridView)findViewById(R.id.picture_group_gridView);
gridView.setAdapter(new ImageGridAdapter(this));
gridView.invalidateViews();
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(PictureGroupActivity.this, "You clicked " + position, Toast.LENGTH_SHORT).show();
}
});
从图库中选择照片时,gridView 保持为空。你如何使它工作?我究竟做错了什么 ?提前谢谢你。
如果您总是 return 来自 getCount()
的 0,那么您的列表将始终为空。同样,您需要 return 来自 getItem()
的内容,以便您的视图知道哪些数据与哪个列表项相关联。您可能想要使用更具体的 Adapter
实现,例如 ArrayAdapter
可以为您处理其中的一些问题。
public class ImageGridAdapter extends BaseAdapter {
public Uri imageUri;
private Context mContext;
public ImageGridAdapter(Context c) {
this.mContext = c;
}
@Override
public int getCount() {
return 5;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
imageUri = PictureGroupActivity.selectedImage;
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageURI(null);
imageView.setImageURI(imageUri);
return imageView;
}
}
我正在尝试使用其 uri 将您手机图库中的图像添加到 gridView 中。 不幸的是,它什么也没做,我似乎找不到让它工作的方法。
我的适配器:
public class ImageGridAdapter extends BaseAdapter {
public Uri imageUri;
private Context mContext;
public ImageGridAdapter(Context c) {
this.mContext = c;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
imageUri = PictureGroupActivity.selectedImage;
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageURI(null);
imageView.setImageURI(imageUri);
return imageView;
}
}
适配器应该从 onActivtyResult 获取 imageUri:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
gridView = (GridView)findViewById(R.id.picture_group_gridView);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Toast.makeText(PictureGroupActivity.this, "selectedImage ma hodnotu: " + selectedImage, Toast.LENGTH_SHORT).show();
}
}
我已经在 activity 中的 onCreate 中设置了 gridView:
GridView gridView = (GridView)findViewById(R.id.picture_group_gridView);
gridView.setAdapter(new ImageGridAdapter(this));
gridView.invalidateViews();
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(PictureGroupActivity.this, "You clicked " + position, Toast.LENGTH_SHORT).show();
}
});
从图库中选择照片时,gridView 保持为空。你如何使它工作?我究竟做错了什么 ?提前谢谢你。
如果您总是 return 来自 getCount()
的 0,那么您的列表将始终为空。同样,您需要 return 来自 getItem()
的内容,以便您的视图知道哪些数据与哪个列表项相关联。您可能想要使用更具体的 Adapter
实现,例如 ArrayAdapter
可以为您处理其中的一些问题。
public class ImageGridAdapter extends BaseAdapter {
public Uri imageUri;
private Context mContext;
public ImageGridAdapter(Context c) {
this.mContext = c;
}
@Override
public int getCount() {
return 5;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
imageUri = PictureGroupActivity.selectedImage;
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageURI(null);
imageView.setImageURI(imageUri);
return imageView;
}
}