PHP 및 MySQL 데이터베이스에서 이미지 URL을 가져옵니다. Log.d
에 유효한 이미지 URL이 표시된 결과가 표시되므로 여기에 나온 내용은 모두 문제가되지 않습니다. 지정된 URL에서 이미지를 가져오고 비트 맵으로 반환이 아래 다른 클래스에 ArrayList <Bitmap>을 전달하고 비트 맵 []으로 변환
if (success == 1) {
JSONArray comments = json.getJSONArray("photos");
for (int i = 0; i < comments.length(); i++) {
JSONObject m = comments.getJSONObject(i);
final String filename = m.getString("filename");
final String extension = m.getString("extension");
String upload_at = m.getString("upload_at");
String uid = m.getString("uid");
runOnUiThread(new Runnable() {
@Override
public void run() {
Bitmap mThumbIds = fetchImage(filepath_min
+ filename + "." + extension);
Log.d("Photo URL", filepath_min + filename + "." + extension);
List<Bitmap> l = Arrays.asList(mThumbIds);
photoList = new ArrayList<Bitmap>(l);
}
});
}
}
// Instance of ImageAdapter Class
mHandler.postDelayed((new Runnable() {
public void run() {
imgGrid.setAdapter(new ImageAdapter(
PhotoViewerActivity.this, photoList));
}
}), 1000);
. 여기에 아무런 문제가 없습니다. 참조 용으로는 반환 값이 Bitmap임을 보여주고 싶습니다.
public Bitmap fetchImage(String urlstr) {
try {
URL url;
url = new URL(urlstr);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setDoInput(true);
c.connect();
InputStream is = c.getInputStream();
Bitmap img;
img = BitmapFactory.decodeStream(is);
return img;
} catch (MalformedURLException e) {
Log.d("RemoteImageHandler", "fetchImage passed invalid URL: "
+ urlstr);
} catch (IOException e) {
Log.d("RemoteImageHandler", "fetchImage IO exception: " + e);
}
return null;
}
이의 GridView에서 이미지를보기위한 내 ImageAdapter입니다
.
public class ImageAdapter extends BaseAdapter {
private Context mContext;
List<Bitmap> list = new ArrayList<Bitmap> l;
public ImageAdapter(Context c, ArrayList<Bitmap> l) {
mContext = c;
list = l;
}
public Bitmap[] mThumbIds = list.toArray(new Bitmap[list.size()]);
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageBitmap(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(130, 130));
return imageView;
}
}
여기 내 문제입니다. 활동에 이미지가 표시되지 않았습니다. 비트 맵 [] mThumbIds에서 가져 오기 배열을 사용하여 하드 코드 된 URL을 시도하면 성공했습니다.
Bitmap[] mThumbIds = { fetchImage("http://...jpg"),
fetchImage("http://...jpg") }
무엇이 잘못 되었나요? ArrayList 배열로 변환하려면 Bitmap[] mThumbIds = list.toArray(new Bitmap[list.size()]);
시도했다.
'비트 맵'의'Array'를 보내 주어야 할 이유가 있습니까? 왜 URL의 배열을 보내고 어댑터에 이미지를로드하는 것 (지연로드)이 아닌가? 'Array'의 비트 맵은 메모리에 많이 있습니다. –
그래서 String URL 배열을 보내고 ImageAdapter 클래스 내에 이미지를 가져 오는 것을 의미합니까? 좋아, 나는 그것을 시도한다. – Faizal