[英]no images being displayed in GridView
I am really new to app development and I have been trying to create an image gallery app. 我真的是应用程序开发的新手,我一直在尝试创建图片库应用程序。 But when I click to open the app, nothing is being displayed.I expect it to display images stored on SD card in Gridview.
但是当我单击以打开该应用程序时,没有任何显示。 I have read quite a few questions on SO related to it but they haven't been of much help.
我已经阅读了很多有关SO的问题,但并没有太大帮助。 I can't find anything wrong in my code.Can anyone tell me what is wrong with my code?
我在代码中找不到任何错误,谁能告诉我我的代码有什么问题吗?
imageGallery.java : imageGallery.java :
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.GridView;
import java.io.File;
import java.util.ArrayList;
public class imageGallery extends Activity {
ArrayList<String> images;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_gallery);
images = new ArrayList<>();// list of file paths
getFromSdcard();
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this, images));
}
File[] listFile;
public void getFromSdcard() {
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "InsCam + FixBlur");
if (listFile != null && listFile.length > 0) {
for (File file1 : listFile) {
if (file1.isDirectory()) {
listFile = file.listFiles();
} else {
if (file.getName().endsWith(".png")
|| file.getName().endsWith(".jpg")
|| file.getName().endsWith(".jpeg")
|| file.getName().endsWith(".gif")
|| file.getName().endsWith(".bmp")
|| file.getName().endsWith(".webp"))
{
String temp = file1.getPath().substring(0, file1.getPath().lastIndexOf('/'));
if (!images.contains(temp))
images.add(temp);
}
}
}
}
}
}
ImageAdapter.java : ImageAdapter.java :
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import java.util.List;
public class ImageAdapter extends BaseAdapter {
private static final int PADDING = 8;
private static final int WIDTH = 250;
private static final int HEIGHT = 250;
private Context mContext;
private List<String> mThumbIds;
public ImageAdapter(Context c, List<String> ids){
mContext = c;
this.mThumbIds = ids;
}
@Override
public int getCount() {
return mThumbIds.size();
}
@Override
public Object getItem(int position) {
return null;
}
// Will get called to provide the ID that
// is passed to OnItemClickListener.onItemClick()
@Override
public long getItemId(int position) {
return position;
}
// create a new ImageView for each item referenced by the Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = (ImageView) convertView;
// if convertView's not recycled, initialize some attributes
if (imageView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(WIDTH, HEIGHT));
imageView.setPadding(PADDING, PADDING, PADDING, PADDING);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mThumbIds.get(position), options);
// Set inSampleSize
options.inSampleSize = 4;
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
Bitmap myBitmap = BitmapFactory.decodeFile(mThumbIds.get(position), options);
imageView.setImageBitmap(myBitmap);
return imageView;
}
}
Your getItem method in adapter returns null that seems to be the issue. 您的适配器中的getItem方法返回的null似乎是问题所在。 You should return string path or bitmap after converting the string path what ever you like as return type is Object.
转换字符串路径后,您应该返回字符串路径或位图,而返回类型是对象。 so I would suggest this.
所以我建议这个。
class ImageAdapter extends BaseAdapter{
@Override
public Object getItem(int position) {
//I have shown string example here.. you can update as per your needs..
return mThumbIds.get(position);
}
}
hope this helps.. 希望这可以帮助..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.