2016-06-27 3 views
0

이 코드를 시도했지만 원하는 출력을 얻지 못했습니다.피카소 비트 맵을 사용하고 싶지만 실패합니다.

Picasso.with(getApplicationContext()).load(mPicList.get(position)).into(new Target() { 
        @Override 
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
         zoomImageView.setImageBitmap(bitmap); 
         Logger.getInstance().v("qw", "ViewPagerAdapter.134.onBitmapLoaded.");   
        } 

        @Override 
        public void onBitmapFailed(Drawable errorDrawable) { 
         Logger.getInstance().v("qw", "ViewPagerAdapter.139.onBitmapFailed.");  
        } 

        @Override 
        public void onPrepareLoad(Drawable placeHolderDrawable) { 
         Logger.getInstance().v("qw", "ViewPagerAdapter.144.onPrepareLoad."); 
        } 
       }); 

항상 로그를 인쇄합니다 .PrepareLoad ???? ????

+0

왜이 메소드를 호출하면 안됩니까? – Darwind

+0

정확히 어떤 문제가 있습니까? – Beena

답변

0

문제는 가비지 수집 대상 인스턴스에 대한 강력한 참조를 유지하지 못한다는 것입니다. 새로운 Target() {...}은 강력한 참조가 없으므로 호출 할 수 없습니다. 뷰 홀더의 필드에 저장하거나 뷰의 하위 클래스에 구현해야합니다.

https://stackoverflow.com/a/30681395/5476209

이 남자 명시 적으로 관리하는 가비지 컬렉션 문제가 라이브러리에서 일어나는 :

이 답변을 참조하십시오.

+0

대단히 감사합니다! –

+0

zoomImageView.setTag (mTarget)에서 성공; –

+1

이런 상황이 생길 때마다 github 라이브러리로 가서 적어도 라이브러리의 문제를 확인하면 문제가 이미 picasso 라이브러리에서 논의됩니다. @dukemars – TapanHP

0

나는 new Target()...에 대한 이유가 있는지 확실하지 않습니다하지만 당신은 이런 식으로 뭔가를 사용하려고 할 수 있습니다 : 당신이 조각에있는 경우, getActivity() 대신 this 사용

Picasso.with(this).load(mPicList.get(position)).into(zoomImageView); 

.

+0

감사합니다. 그러나 조각이 없습니다. ViewPager 어댑터 만 –

+0

어댑터에'context'를 전달하고'this' 대신에 사용하십시오 – Marijan

+0

덕분에 zoomImageView.setTag (mTarget);를 추가했습니다. –