[英]no images being displayed in GridView
我真的是應用程序開發的新手,我一直在嘗試創建圖片庫應用程序。 但是當我單擊以打開該應用程序時,沒有任何顯示。 我已經閱讀了很多有關SO的問題,但並沒有太大幫助。 我在代碼中找不到任何錯誤,誰能告訴我我的代碼有什么問題嗎?
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 :
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;
}
}
您的適配器中的getItem方法返回的null似乎是問題所在。 轉換字符串路徑后,您應該返回字符串路徑或位圖,而返回類型是對象。 所以我建議這個。
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);
}
}
希望這可以幫助..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.