@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null){
v = inflater.inflate(R.layout.list_expandable_contents, null);
v.setTag(R.id.list_expandable_contents_img, v.findViewById(R.id.list_expandable_contents_img));
v.setTag(R.id.list_expandable_contents_title, v.findViewById(R.id.list_expandable_contents_title));
v.setTag(R.id.list_expandable_contents_singer, v.findViewById(R.id.list_expandable_contents_singer));
}
Log.e("------------","groupPosition : "+ groupPosition +" / childPosition : "+ childPosition);
SongInfoBean childInfo = getChild(groupPosition, childPosition);
if(childInfo.getTitle() != null){
ImageView childImg = new ImageView(context);
childImg = (ImageView)v.getTag(R.id.list_expandable_contents_img);
setImg(childImg,childInfo.getImg());
/* int resourceId = context.getResources().getIdentifier("s_"+(childPosition+1), "drawable", context.getPackageName());
childImg.setImageResource(resourceId);*/
TextView childTitle = (TextView)v.getTag(R.id.list_expandable_contents_title);
childTitle.setText(childInfo.getTitle());
TextView childSinger = (TextView)v.getTag(R.id.list_expandable_contents_singer);
childSinger.setText(childInfo.getSinger());
}else{
ImageView childImg = (ImageView)v.getTag(R.id.list_expandable_contents_img);
childImg.setImageResource(R.drawable.ic_launcher);
}
return v;
}
private void setImg(ImageView view, String imgUrl){
if(imgUrl != null){
/*ImageMemory imageMemory = ImageMemory.getInstance();
Bitmap bmImg = imageMemory.getBitImage(imgUrl);*/
Bitmap bmImg = null;
if(bmImg == null){
ImgViewTask task = new ImgViewTask(view);
task.execute(imgUrl);
//imageMemory.setImageMemoryList(imgUrl, bmImg);
}
/*else{
WeakReference<ImageView> weakView = new WeakReference<ImageView>(view);
final ImageView imageView = weakView.get();
if (imageView != null ) {
imageView.setImageBitmap(bmImg);
}
}*/
}
}
class ImgViewTask extends AsyncTask<String, Void, Bitmap> {
private final WeakReference<ImageView> imageViewReference;
public ImgViewTask(ImageView imageView) {
// Use a WeakReference to ensure the ImageView can be garbage collected
imageViewReference = new WeakReference<ImageView>(imageView);
}
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bmImg = null;
String imgUrl = params[0];
HttpURLConnection conn= null;
InputStream is= null;
try {
URL myFileUrl= new URL(imgUrl);
conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
is.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn != null){
conn.disconnect();
}
}
return bmImg;
}
// Once complete, see if ImageView is still around and set bitmap.
@Override
protected void onPostExecute(Bitmap bitmap) {
if (imageViewReference != null && bitmap != null) {
final ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
}
안녕하세요.. 리스트 뷰 관련 질문입니다..
ExpandalbeList사용하여 childview구성하구요
childView에는 imageview 1개 textview2개가 있습니다.
imageview에서 ansyncTask 사용하여, 서버에서 이미지 가져와서 bitmap으로 변환하고 WeakReference<imageView>사용해서 만들어봤는데요
문제는 이미지는 잘 받아 오는데 이미지가 childview간에서 지맘대로 붙습니다..
음..말로는 설명이 에메한데요..
childview1 - imageview1
childview2 -imageview2
childview3 - imageview3
이 있을때 imageview1에 통신으로 받아온 1-> 2-> 3 -> 1 이미지가 빠르게 바뀌며 올라가는 식입니다.
그리고 나서 imageview 2에 2번 이미지, imageview 3에 1 ->3 .. 이런식입니다.
대충 비슷한 패턴이구요.. 이미지가 빠르게 변화되는건 눈에 보일정도 수준이구요..
다른 groupview를 클릭하면 기존 1,2,3번 이미지가 들어가 있는 상태로 열리면서 위에서처럼 4,5,6번 이미지가 왔다갔다 합니다.;;
getview햇던 위치를 정상적으로 못찾아 가는거 같은데요.. ㅠㅠ 예전에 잡았던 오류인데 기억이 안나네요 ㅠㅠ
엇.. 자바를 넣었더니 위로가네요; 위에 코드는 child getview 부분이랑 async쪽 코드 입니다..
혹시 이문제 아시는분 있으신가요? ㅠㅠ