picasso를 이용해 url에서 이미지 받아올 때 질문입니다.

조회수 2842회

현재 recyclerview를 사용하고 있고 picasso를 이용해 url에서 이미지를 받아오고 있습니다. json 파싱도 이용중입니다.

처음에 데이터를 30개 받아와서 recyclerview에 뿌려주고 스크롤이 바닥에 닿으면 데이터를 30개 더 받아와서 이어서 보여주고 있습니다. 근데 중간에 클랜이 없으면 클랜이름과 클랜마크(이미지 from url)를 그냥 공백으로 나타내야 하는데 되질 않습니다. ㅜㅜ

@Override
public void onBindViewHolder(RankingRecyclerItemViewHolder holder, int position) {
    RankingRecyclerViewItem item = RankingRecyclerViewItemList.get(position);

    holder.sunwiTxv.setText(item.sunwi);
    Picasso.with(context).load(item.getUrl_image()).resize(40, 40).into(holder.clanImage);
    holder.ladderTxv.setText(item.ladder);
    holder.winrateTxv.setText(item.winrate);
    holder.clanTxv.setText(item.clan);
    holder.idTxv.setText(item.name);

}

이건 리사이클러뷰 adapter의 내용중 일부이고

                String clan = childJsonObject.getString("clan");

                if (clan == null) {
                    RankingRecyclerViewItem.clan = null;
                    RankingRecyclerViewItem.url_image = null;
                } else {
                    RankingRecyclerViewItem.clan = childJsonObject.getString("clan");

이건 메인에서 사용할때입니다.

어떻게 코딩을 구사해야 할까요? ㅜㅜ 이미지가 없는것은 url이 존재하지 않습니다. 이미지가 없을때 공백으로 나타내려면 어떡해야 하나요? ㅜㅜ

  • Picasso 의 placeholer() , error() 를 사용하시면 편합니당 최봉재 2016.7.27 14:12

1 답변

  • 이미지가 존재하지 않을 때, 빈 화면을 보여주고 싶은 것이라면 onBindViewHolder() 함수에서 holder.clanImage를 Visible, Invisible 처리해보세요.

    if (item.getUrl_image() != null) {
        holder.clanImage.setVisibility(View.VISIBLE);
        Picasso.with(context).load(item.getUrl_image()).resize(40, 40).into(holder.clanImage);    
    } else {
        holder.clanImage.setVisibility(View.INVISIBLE);
    }
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaebf10e0 이런 에러만 나오고 나오질 않습니다. ㅜㅜ kyudongPark 2016.7.24 20:35
    • 나오지 않는다는 게 이미지가 나와야할 때 나오지 않는다는 말씀인가요? 올려주신 에러는 해당 현상과 직접적인 영향은 없어보입니다. 알 수 없는 사용자 2016.7.25 09:54

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)