안드로이드에서 웹서버에 있는 이미지를 읽어와 커스텀 리스트 뷰에 뿌려 주는 프로그램을 만들고있는데
이미지는 가지고 오나 로딩이 매우 느리고, A 이미지가 리스트뷰에 첫번째에 로딩 되야 되는데 B,C,D,F 이미지들이 로딩됬다가 5초 정도 있으면 A 이미지로 돌아옵니다 .
조언좀 부탁드립니다 어댑터가 글자수 넘어가서 댓글에 달았습니다
class myThread extends Thread {
public void run() {
Document doc = null;
//String html = "http://211.226.100.190:8080/db/nemotest.jsp";
try {
URL url = new URL(clickhtml);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
doc = Jsoup.connect(clickhtml).get();
Elements img = doc.select("img");
Elements atag = doc.select("h1");
final String[] asrc = new String[img.size()];
String[] imgsrc = new String[img.size()];
address = new String[atag.size() / 2];
name = new String[atag.size() / 2];
final ListView lv = (ListView) findViewById(R.id.listview);
final ArrayList<Story> al = new ArrayList<Story>();
al.clear();
int count = 0;
for (int j = 0; j < atag.size() / 2; j++) {
address[j] = doc.select("h1").get(count).getElementsByTag("h1").html();
count++;
name[j] = doc.select("h1").get(count).getElementsByTag("h1").html();
count++;
}
for (int i = 0; i < img.size(); i++) {
imgsrc[i] = doc.select("a").get(i).getElementsByTag("img").attr("src");
asrc[i] = doc.select("a").attr("href");
al.add(new Story(name[i], address[i], imgsrc[i]));
}
handler.post(new Runnable() {
@Override
public void run() {
MyAdapter adapter = new MyAdapter(
MainActivity.this,
R.layout.list_item,
al);
lv.setAdapter(adapter);
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), asrc[position], Toast.LENGTH_SHORT).show();
String DetailHttp = asrc[position];
Intent intent = new Intent(MainActivity.this, Detail.class);
intent.putExtra("DetailHttp", DetailHttp);
startActivity(intent);
}
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class Story {
String date = "";
String message = "";
String img = "";
public Story(String date, String message, String img) {
this.date = date;
this.message = message;
this.img = img;
}
public Story() {
}
}
public class OpenHttpConnection extends AsyncTask<Object, Void, Bitmap> {
private ImageView bmImage;
@Override
protected Bitmap doInBackground(Object... params) {
Bitmap mBitmap = null;
bmImage = (ImageView) params[0];
String url = (String) params[1];
InputStream in = null;
try {
in = new java.net.URL(url).openStream();
mBitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return mBitmap;
}
@Override
protected void onPostExecute(Bitmap bm) {
super.onPostExecute(bm);
bmImage.setImageBitmap(bm);
}
}