2016-10-15 3 views
0

데이터 바인딩을 사용하여 레이아웃 및 글라이드 라이브러리를 사용하여 어댑터 클래스에서 이미지를로드합니다. 이제는 각 행에 이미지를로드하기 전에 진행률 회 전자를 첨부하고 싶지만 현재는로드하는 방법을 모르겠습니다. ?? recyclerview 항목에서 이미지를로드하기 전에 스피너를 추가하는 방법

감사

여기에 어쩌면 당신은 회 전자의 진행 상황을 보여주는에 리스너를 추가 할 수 있습니다 내 어댑터 클래스

public class ImageSetAdapter extends RecyclerView.Adapter<ImageSetAdapter.PictureItemHolder> { 

    List<HouseModelSet> data; 
    HousesListener housesListener; 

    public ImageSetAdapter(List<HouseModelSet> data) { 
     this.data = data; 
    } 

    @Override 
    public PictureItemHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     /*View v = inflater.inflate(R.layout.item_home_picture, parent, false); 
      ItemHomePictureBinding itemHomePictureBinding = DataBindingUtil.inflate(inflater, R.layout.item_home_picture, parent, false);*/ 

     ItemHomePictureBinding binding = ItemHomePictureBinding.inflate(inflater, parent, false); 

     return new PictureItemHolder(binding.getRoot()); 
    } 

     @Override 
    public void onBindViewHolder(PictureItemHolder holder, final int position) { 
     HouseModelSet houseSetModel = data.get(position); 
     List<PostModel> postModels = houseSetModel.getHouseModels(); 
     if (postModels.size() > 4) { 
      final PostModel hm1 = postModels.get(0); 
      final PostModel hm2 = postModels.get(1); 
      final PostModel hm3 = postModels.get(2); 
      final PostModel hm4 = postModels.get(3); 
      final PostModel hm5 = postModels.get(4); 

      holder.binding.house1.setHouse(hm1); 
      holder.binding.house2.setHouse(hm2); 
      holder.binding.house3.setHouse(hm3); 
      holder.binding.house4.setHouse(hm4); 
      holder.binding.house5.setHouse(hm5); 
      holder.binding.setHouses(houseSetModel); 

      holder.binding.house1.getRoot().setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if (housesListener != null) { 
         housesListener.onHouseClick(position, hm1); 
        } 
       } 
      }); 

      holder.binding.house2.getRoot().setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if (housesListener != null) { 
         housesListener.onHouseClick(position, hm2); 
        } 
       } 
      }); 

      holder.binding.house3.getRoot().setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if (housesListener != null) { 
         housesListener.onHouseClick(position, hm3); 
        } 
       } 
      }); 

      holder.binding.house4.getRoot().setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if (housesListener != null) { 
         housesListener.onHouseClick(position, hm4); 
        } 
       } 
      }); 

      holder.binding.house5.getRoot().setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        if (housesListener != null) { 
         housesListener.onHouseClick(position, hm5); 
        } 
       } 
      }); 

     } 
    } 

    @BindingAdapter("app:imageUrl") 
    public static void loadImage(ImageView imageView, String url) { 
     Glide.with(imageView.getContext()) 
       .load(ApiHelper.BASE_URL + url) 
       .thumbnail(0.5f) 
       .crossFade() 

       .into(imageView); 
    } 

    public void setHousesListener(HousesListener housesListener) { 
     this.housesListener = housesListener; 
    } 

    @Override 
    public int getItemCount() { 
     return data.size(); 
    } 

    public class PictureItemHolder extends RecyclerView.ViewHolder{ 

     ItemHomePictureBinding binding; 

     public PictureItemHolder(View itemView) { 
      super(itemView); 
      binding = DataBindingUtil.bind(itemView); 
     } 

    } 

    public void updateList(List<HouseModelSet> list) { 
     this.data = list; 
     notifyDataSetChanged(); 
    } 

    public interface HousesListener{ 
     void onHouseClick(int pos, PostModel houseModel); 
    } 
} 

답변

2

입니다.

Glide.with(imageView.getContext()) 
     .load(ApiHelper.BASE_URL + url) 
.listener(new RequestListener<String, GlideDrawable>() { 
    @Override 
    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
     yourSpinnerProgress.setVisibility(View.GONE); 
     return false; 
    } 

    @Override 
    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
     yourSpinnerProgress.setVisibility(View.GONE); 
     return false; 
    } 
}) 
.into(imageView); 

을 그리고 레이아웃에 yourSpinnerProgress를 추가 배치 &의 루트에 대한 RelativeLayout의를 사용하는 것을 잊지 마세요 :

이 당신의 코드를 변경할 수 있습니다.

관련 문제