调色板API不起作用(仅在调试时有效)

时间:2019-02-16 19:15:45

标签: android android-recyclerview recycler-adapter android-palette

我在其中创建了一个简单的TaskGroup.OwnerId和一个TaskOwner.GroupId。在RecyclerView中有CardViewCardView。因此,我获得了图像的URL并使用ImageView进行加载。在使用TextView之前,一切工作正常。因此,我想从图像中获取颜色并将其设置为PicassoPalette API

这是我的CardView

TextView

每次显示占位符图像。当我进行调试时,它可以工作。所以有什么问题?谢谢。

1 个答案:

答案 0 :(得分:0)

所以问题不在Palette API中。问题在于目标正在被垃圾回收。因此解决方案是在对象上实现目标或将其存储在字段中并将其设置为ImageView的标记。

这里。现在正在工作。

@Override
public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, int position) {
    myViewHolder.textView.setText(imageDescription.get(position));
    Target target = new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            myViewHolder.imageView.setImageBitmap(bitmap);
            myViewHolder.getPalette();
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
            myViewHolder.imageView.setImageResource(R.drawable.error);
        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {
            myViewHolder.imageView.setImageResource(R.drawable.placeholder);
        }
    };

    Picasso.with(context)
            .load(imagesUrl.get(position))
            .into(target);

    myViewHolder.imageView.setTag(target);
}

我认为这有一天会帮助任何人)))谢谢