안드로이드 개발 질문/답변
(글 수 45,052)
커스텀 리스트뷰+이미지뷰(URL) 공부중입니다.
DB에서 받아온 URL 주소로 이미지를 출력하고 싶은데요
list.add() 2줄있는데 아랫줄처럼 웹뷰 말고 이미지뷰로 구현 할수 있는 방법이 있을까요? 조언 부탁드립니다
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); // 타이틀없음
setContentView(R.layout.gallerylist); // /////// 타이틀 이름 체인지할 변수 ////////////
menutitle = getIntent().getStringExtra("menutitle");glist = (ListView) findViewById(R.id.listView1); // <리스트뷰 선언 mapbt = (Button) findViewById(R.id.mapbt); // 맵버튼 homebt = (Button) findViewById(R.id.homebt); // 홈버튼 backbt = (Button) findViewById(R.id.backbt); // 홈버튼 tv = (TextView) findViewById(R.id.title); // 전시관1,2 testwv = (WebView) findViewById(R.id.img); mapbt.setOnClickListener(this); homebt.setOnClickListener(this); backbt.setOnClickListener(this); photo = (ImageView) findViewById(R.id.img); tv.setText(menutitle); // 전시관 이름 바꾸기 (1,2)
if (menutitle.equals("전시관1")) { // 전시관1로 들어왔을시 mcategory = 4museumcode = "A0300";
} else if (menutitle.equals("전시관2")) { // 전시관2로 들어왔을시 mcategory = 5
museumcode = "A0300";
} mdDatabase = openOrCreateDatabase("sema.data", // DB오픈
SQLiteDatabase.CREATE_IF_NECESSARY, null);
String sql = "SELECT EXHIBIT_TITLE, WRITER_NAME_KOR, WRITER_NAME_ENG, EXHIBIT_AGE, EXHIBIT_MATERIAL FROM TB_EXHIBIT where MUSEUM_CODE_1='"
+ museumcode + "'";
Cursor c = mdDatabase.rawQuery(sql, null);
c.moveToFirst();
String row0 = "";
String row1 = "";
String row2 = "";
String row3 = "";
String row4 = "";
while (!c.isAfterLast()) { row0 = c.getString(0).toString(); // 작품명
row1 = c.getString(1).toString(); // 이미지 URL 주소
row2 = c.getString(2).toString(); // 작가이름 영어
row3 = c.getString(3).toString(); // 제작년도
row4 = c.getString(4).toString(); // 재질
System.out.println("row1=" + row1);
System.out.println("row2=" + row2);
list.add(new GalleryL(R.drawable.icon02, row0, row4)); // 리스트
list.add(new GalleryL(row1, row2, row4)); // 리스트
c.moveToNext();
}
MyCustomAdapter adapter = new MyCustomAdapter(getApplicationContext(),
R.layout.gallery_list, list); // < 갤러리리스트 XML과 GalleryL 형식 리스트
adapter.notifyDataSetChanged();// 조합glist.setAdapter(adapter); }); } // 온크리에이트
class MyCustomAdapter extends BaseAdapter {
Context ctx;
int layout;
ArrayList<GalleryL> list;
LayoutInflater inf; public MyCustomAdapter(Context ctx, int layout, ArrayList<GalleryL> list) {
this.ctx = ctx;
this.layout = layout;
this.list = list;
inf = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}
public int getCount() {
// TODO Auto-generated method stub
return list.size();
} public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
} public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub
if (convertView == null) {
convertView = inf.inflate(layout, null);
}
GalleryL gl = list.get(position);TextView textv1 = (TextView) convertView.findViewById(R.id.tvup); TextView textv2 = (TextView) convertView.findViewById(R.id.tvdown); ImageView img = (ImageView) convertView.findViewById(R.id.img); textv1.setText(gl.getUptext()); // < 윗줄 텍스트 textv2.setText(gl.getDowntext()); // < 아랫줄 텍스트 img.setImageResource(gl.getImg()); return convertView; } }
class GalleryL {
int img;
String uptext;
String downtext; public GalleryL(int img, String uptext, String downtext) { // < 리스트뷰에
// 보여질 파라미터
super();
this.img = img;
this.uptext = uptext;
this.downtext = downtext;
} public int getImg() { // < 전시물 이미지
return img;
} public String getUptext() { // < 윗줄 텍스트
return uptext;
} public String getDowntext() { // < 아랫줄 텍스트
return downtext;
}
}
2013.01.30 17:33:13
아랫부분 한번 참고하세요.
getview에서 홀더를 선언하고
if (holder.imgView != null) {
new ImageAsync(holder.imgView).execute(여기에 url);
}
class ImageAsync extends AsyncTask<String, Integer, Bitmap> {
Bitmap bm;
ImageView mImg;
String image_url;
ImageAsync(ImageView img) {
mImg = img;
}
@Override
protected Bitmap doInBackground(String... params) {
image_url = params[0];
bm = ImageCashe.getImage(image_url);
if (bm == null) {
try {
URL url = new URL("image_url);
URLConnection connection = url.openConnection();
connection.connect();
InputStream is = connection.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
}
ImageCashe.setImage(image_url, bm);
}
return bm;
}
@Override
protected void onPostExecute(Bitmap bm) {
if (image_url.equals("NoImage")) {
mImg.setImageResource(R.drawable.img_no);
} else {
mImg.setImageBitmap(bm);
}
}
}



