1

I have been using fresco library to load images in the adapter but the images are not set correctly as I expected. Here is my code:

 public class HomeListingAdapter_recyler1 extends RecyclerView.Adapter  {
    private Context context;
    private ArrayList propertyItemList;
    private ImageLoader mImageLoader;
    public HomeListingAdapter_recyler1(HomeListingActivity_recycler propertyViews, ArrayList propertyItemList) {
        Fresco.initialize(propertyViews);
        this.propertyItemList = propertyItemList;
        this.context = propertyViews;
    }
    @Override
    public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.property_item_layout,parent,false);
        CustomViewHolder viewHolder = new CustomViewHolder(itemLayoutView);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final CustomViewHolder holder, final int position) {
        mImageLoader = VolleySingletonPattern.getInstance(context).getImageLoader();
        holder.txtPropertyName.setText(propertyItemList.get(position).ville);
        holder.txtPropertyType.setText(propertyItemList.get(position).bienName);
        if(propertyItemList.get(position).pieces.equalsIgnoreCase("0")){
            holder.txtPropertySurfaceArea.setText(propertyItemList.get(position).surface+" "+context.getString(R.string.meter_square));
        } else {                holder.txtPropertySurfaceArea.setText(propertyItemList.get(position).surface+" "+context.getString(R.string.meter_square)+" - "+ propertyItemList.get(position).pieces+" "+context.getResources().getString(R.string.pieces));
        }
        holder.txtPropertyPrice.setText(propertyItemList.get(position).montantLoyer);
        Uri imageUri;
        try {
            if(!TextUtils.isNullOrEmpty(propertyItemList.get(position).photo)) {
                imageUri = Uri.parse(propertyItemList.get(position).photo);
                holder.imgPropertyImage.setVisibility(View.VISIBLE);
                holder.imgPropertyImage.setImageURI(imageUri);
            }
        } catch (Exception e) {
        }
    }
    @Override
    public int getItemCount() {
        return propertyItemList.size();
    }
    public class CustomViewHolder extends RecyclerView.ViewHolder {
        SimpleDraweeView imgPropertyImage;
        public TextView txtPropertyName , txtPropertyType , txtPropertySurfaceArea ,txtPropertyPrice;
        public CustomViewHolder(View itemView) {
            super(itemView);
            imgPropertyImage = (SimpleDraweeView) itemView.findViewById(R.id.image_property);
            txtPropertyName = (TextView)  itemView.findViewById(R.id.txt_property_name);
            txtPropertyType = (TextView)  itemView.findViewById(R.id.txt_property_type);
            txtPropertySurfaceArea = (TextView)  itemView.findViewById(R.id.txt_property_surface_piece);
            txtPropertyPrice = (TextView)  itemView.findViewById(R.id.txt_property_price);
        }
    }
}
4

1 回答 1

3

在 xml 中设置默认占位符图像。在您的适配器类中,如果您的照片 url 不为空,请将您的照片 url 字符串转换为 uri 并将其设置为 view.setImageUri(uri),否则在您的 else 部分设置 view.setImageUri(null)。

Uri imageUri;

try {

holder.imgPropertyImage.setVisibility(View.VISIBLE);

if(!TextUtils.isNullOrEmpty(propertyItemList.get(position).photo)) {

imageUri = Uri.parse(propertyItemList.get(position).photo);

holder.imgPropertyImage.invalidate();

holder.imgPropertyImage.setImageURI(imageUri);

}

else{

 holder.imgPropertyImage.invalidate();

 holder.imgPropertyImage.setImageURI(null);

 }

 } 
catch (Exception e) {
            e.printStackTrace();

}
于 2016-02-15T11:29:46.517 回答