ディレクトリから画像を表示するリストビューがあり、画像をうまく読み込んでいますが、スクロールしてスクロールした後にスクロールすると、画面から指を離して戻す必要があります画面をスクロールして元に戻します。また、スクロールが速すぎると、OutOfMemoryErrorというlogcatでアプリケーションがクラッシュします。ここimageviewがクラッシュする
は私のコードです:
package com.search.visual;
import java.io.File;
import java.io.FilenameFilter;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
public class history extends ListActivity{
private String dir = ".vis";
private File images;
private File [] imageList;
private File item;
private Uri [] ImageRef;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.history);
loadPics();
}
public class ImageAdapter extends BaseAdapter {
int Background;
private Context con;
public ImageAdapter(Context c) {
con = c;
TypedArray attr = con.obtainStyledAttributes(R.styleable.HelloGallery);
Background = attr.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
attr.recycle();
}
public int getCount() {
return ImageRef.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
imageView = new ImageView(con);
imageView.setImageURI(ImageRef[position]);
imageView.setLayoutParams(new ListView.LayoutParams(75, 75));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setBackgroundResource(Background);
return imageView;
}
}
protected void onListItemClick(ListView l, View v, int position, long id) {
item = imageList[position];
Intent i = new Intent("com.search.visual.IMAGE");
i.putExtra(Intent.EXTRA_STREAM, item);
startActivity(i); //StIntring imname = (String) ;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
loadPics();
super.onResume();
}
public void loadPics(){
images = Environment.getExternalStoragePublicDirectory(dir);
imageList = images.listFiles(new FilenameFilter() {
public boolean accept(File dir, String filename) {
// TODO Auto-generated method stub
return (filename.endsWith(".jpg"));
}
});
if(imageList.length > 0){
ImageRef = new Uri[imageList.length];
for(int i = 0; i<imageList.length; i++){
ImageRef[i] = Uri.parse(imageList[i].getAbsolutePath());
}
setListAdapter(new ImageAdapter(this));
}else{
Intent i = new Intent("com.search.visual.ERROR");
startActivity(i);
}
}
}
誰もが1これはあなたの助けが起こっている理由として任意の手掛かりが大幅
'Uri Array'を' Bitmap array'にスワップして問題をソートしました。メモリ問題が消えてしまっているように見えて、スクロールの問題があなたの助けとアドバイスに感謝してしまいました。 –