마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListView 이미지 해당 index에 가지않고 이상한데로 갑니다.

–1 추천

안녕하세요 안드로이드 펍 가족님들.

자주 글을 올리게 되네요 죄송합니다.

현재 웹에서 이미지를 가져와서 해당 셀에 image를 넣을려고하는데요. listview를 스크롤하면 이미지가 바뀌면서 이상하게 됩니다

머가 문제 인가요 ㅜㅜ

 

final ImageView imgFinanceTitle = (ImageView)v.findViewById(R.id.imgFinanceTitle);

 

BSHTTPImageJob bannerJob = new BSHTTPImageJob(0, new Handler(){

@Override

public void handleMessage(Message msg) {

if(msg.obj != null){

Bitmap bt= (Bitmap)msg.obj;

imgFinanceTitle.setImageBitmap(bt);

}

}

},null,null,true);

bannerJob.execute(Const.LIFE_API_SERVER_URL+model.get("thumb_src"));

 

흠바바 1 (4,000 포인트) 님이 2013년 9월 12일 질문
listview 구현하신쪽 소스를 보여주세요
커스텀 리스트뷰로 따로 클래스 만드신거같은데
오버라이드한 getview 함수쪽이 궁금하네요

1개의 답변

+1 추천

리스트 뷰는 각 item마다 뷰를 별도로 만들지 않고 있는 것을 재사용합니다.

bannerJob.execute 을 호출하는 시점의 item 인덱스와 이미지로딩이 완료된 시점의 인덱스가 같은지 비교한 후에 업데이트해야 합니다.

익명사용자 님이 2013년 9월 12일 답변
안녕하세요 현재 리스트뷰가 만들어질때
BSHTTPImageJob bannerJob = new BSHTTPImageJob(position, new Handler(){
                @Override
                public void handleMessage(Message msg) {
                    if(msg.obj != null){
                       
                            Bitmap bt= (Bitmap)msg.obj;
                            Bitmap imageBitmap=Bitmap.createScaledBitmap(bt, imgFinanceTitle.getWidth(),imgFinanceTitle.getHeight() , true);
                           
                           
                            imgFinanceTitle.setImageBitmap(imageBitmap);
                        }
                    }

                   
                }
            },null,null,true);
           
            bannerJob.execute(Const.LIFE_API_SERVER_URL+model.get("thumb_src")); 호출하고  그게처리가 끝나면 핸들러가호출되어서 처기하게했습니다.

님의 말씀대로  bannerJob이 호출할때 position을 넣어줬구요 파라미터로 그리고 핸들러로 돌아왔을때 msg.what로 아까 넣었던값과 같을때 position의 같을 비교해서 같으면 그리게 했는데 머가 틀린건가요 똑같은데
왠지 백그라운드 동작이 UI쓰레드랑 싱크가 안맞는거 같지만 올려 놓으신 소스만으로는 뭐라 말을 드릴 수 없네요.

그리고 답변 달아주신 것에 공격적으로 대응하시면 누가 답을 달아 주실까요?
...