当前位置: 首页 > 知识库问答 >
问题:

通过壁画库加载的适配器图像是不规则的

浦德明
2023-03-14

我一直在使用fresco库来加载适配器中的图像,但图像的设置并不像我预期的那样正确。下面是我的代码:

 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);
        }
    }
}

共有1个答案

丁光华
2023-03-14

在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();

}
 类似资料:
  • 但它不是加载图像,我也尝试了不同的URL但相同的结果,所以我错过了...

  • 我试图在壁画中加载图像,但图像似乎没有加载。当我添加一个占位符视图时,会显示占位符。 注意,我正在应用程序中初始化Fresco,我在清单中确实有internet使用情况。 示例日志 清单

  • 我已经使用fresco库加载适配器中的图像。但是图像并没有像我预期的那样设置正确。这是我的代码。请帮帮我.提前道谢。

  • 我有一个从服务器加载映像的项目。我这样用毕加索, 多谢了。

  • 我在应用程序中使用frescolib从url加载图像。但是,我在recyclerview的对象中遇到了一个问题。具体来说,我需要在SimpleDraweView中居中显示图像,同时保持格式。所以我使用了下面的代码,但是我得到了应该是白色的部分中有条纹的拉伸图像。 这是错误加载的图像 这是原始图像 我的代码: 知道图像加载不好的原因吗?

  • 问题内容: 我正在创建一个浏览大量图片的应用程序。至此,项目的那部分完成了,它对正确的图片进行了排序,过滤和加载,甚至将它们拆分为单独的页面以加快加载速度。 效果很好,但每页加载25张图片仍需要8秒钟以上。我已经进行了一些研究,得出的结论是,使用异步jQuery Ajax请求是最好的方式,以便尽可能快地同时加载所有请求。 到目前为止,这是我的代码: 此代码的问题在于,除了带有灰色边框的空白方形外,