Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setColorFilter在自定义列表适配器中无法正常工作?_Android - Fatal编程技术网

Android setColorFilter在自定义列表适配器中无法正常工作?

Android setColorFilter在自定义列表适配器中无法正常工作?,android,Android,已经3-4个小时了,我仍然不知道为什么我的imageView的颜色会自动改变,我几乎做了所有的事情。下面是customListAdapter的getView代码 @Override public View getView(final int position, View convertView, @NonNull ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null) {

已经3-4个小时了,我仍然不知道为什么我的imageView的颜色会自动改变,我几乎做了所有的事情。下面是customListAdapter的getView代码

@Override
public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
    final ViewHolder viewHolder;
    if (convertView == null) {
        LayoutInflater inflater = LayoutInflater.from(context);
        convertView = inflater.inflate(R.layout.post_list_adapter, null);
        viewHolder = new ViewHolder();
        viewHolder.des = (TextView) convertView.findViewById(R.id.textView_des);
        viewHolder.like = (TextView) convertView.findViewById(R.id.tv_like);
        viewHolder.name = (TextView) convertView.findViewById(R.id.textView_name);
        viewHolder.dislike = (TextView) convertView.findViewById(R.id.tv_dislike);
        viewHolder.iv_photo = (ImageView) convertView.findViewById(R.id.imageView);
        viewHolder.iv_dislike = (ImageView) convertView.findViewById(R.id.iv_dislike);
        viewHolder.iv_like = (ImageView) convertView.findViewById(R.id.imageView_like);
        viewHolder.iv_pic = (CircleImageView) convertView.findViewById(R.id.profile_image);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    Picasso.with(context).load("url here").into(viewHolder.iv_photo);
    Picasso.with(context).load("url here").into(viewHolder.iv_pic);
    if (data.get(position).isLiked)
        viewHolder.iv_like.setColorFilter(Color.parseColor("#00ff00"));
    if (data.get(position).isDisliked)
        viewHolder.iv_dislike.setColorFilter(Color.parseColor("#00ff00"));
    viewHolder.des.setText(data.get(position).getPost_des());
    viewHolder.name.setText(data.get(position).getName());
    viewHolder.like.setText(data.get(position).getLikes());
    viewHolder.dislike.setText(data.get(position).getDislikes());
    viewHolder.iv_like.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            view.startAnimation(AnimationUtils.loadAnimation(context, R.anim.image_anim));
            if (data.get(position).isLiked) {
                data.get(position).setLiked(false);
                viewHolder.iv_like.setColorFilter(Color.parseColor("#000000"));
            } else if (data.get(position).isDisliked) {
                data.get(position).setLiked(true);
                data.get(position).setDisliked(false);
                viewHolder.iv_like.setColorFilter(Color.parseColor("#00ff00"));
                viewHolder.iv_dislike.setColorFilter(Color.parseColor("#000000"));
            } else {
                data.get(position).setLiked(true);

                viewHolder.iv_like.setColorFilter(Color.parseColor("#00ff00"));
            }


        }
    });
    viewHolder.iv_dislike.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            view.startAnimation(AnimationUtils.loadAnimation(context, R.anim.image_anim));
            if (data.get(position).isDisliked) {
                data.get(position).setDisliked(false);
                viewHolder.iv_dislike.setColorFilter(Color.parseColor("#000000"));
            } else if (data.get(position).isLiked) {
                data.get(position).setLiked(false);
                data.get(position).setDisliked(true);
                viewHolder.iv_like.setColorFilter(Color.parseColor("#000000"));
                viewHolder.iv_dislike.setColorFilter(Color.parseColor("#00ff00"));
            } else {
                data.get(position).setDisliked(true);

                viewHolder.iv_dislike.setColorFilter(Color.parseColor("#00ff00"));
            }
        }
    });
    return convertView;
}
除setColorfilter外,我的所有代码都正常工作。

请尝试下面的内容

viewHolder.iv_loke.setColorFilter(ContextCompat.getColor(context,R.color.green_very_light))

试试下面


viewHolder.iv_loke.setColorFilter(ContextCompat.getColor(context,R.color.green_very_light))

当其他行重复使用该行时,您似乎没有重置颜色过滤器

试试这样做,看看效果如何:

if (data.get(position).isLiked){
    viewHolder.iv_like.setColorFilter(Color.parseColor("#00ff00"));
}else{
    viewHolder.iv_like.setColorFilter(null);
}

if (data.get(position).isDisliked){
    viewHolder.iv_dislike.setColorFilter(Color.parseColor("#00ff00"));
}else{
    viewHolder.iv_dislike.setColorFilter(null);
}

当其他行重复使用该行时,似乎不重置颜色过滤器

试试这样做,看看效果如何:

if (data.get(position).isLiked){
    viewHolder.iv_like.setColorFilter(Color.parseColor("#00ff00"));
}else{
    viewHolder.iv_like.setColorFilter(null);
}

if (data.get(position).isDisliked){
    viewHolder.iv_dislike.setColorFilter(Color.parseColor("#00ff00"));
}else{
    viewHolder.iv_dislike.setColorFilter(null);
}

您应该使用
imageview.getDrawable().setColorFilter(ContextCompat.getColor(context,R.color.black))


另外,不要忘记列表适配器中的else语句。

您应该使用
imageview.getDrawable().setColorFilter(ContextCompat.getColor(context,R.color.black))


另外,不要忘记列表适配器中的else语句。

正如@pskink在评论部分告诉我的那样

刚刚调用了
viewHolder.iv_like.setColorFilter(null)
viewHolder.iv\u.setColorFilter(null)
Picasso.with(context)之后。加载(“此处的url”)。到(viewHolder.iv\u pic)
正如@pskink在评论部分告诉我的那样,它成功了

刚刚调用了
viewHolder.iv_like.setColorFilter(null)
viewHolder.iv\u.setColorFilter(null)
Picasso.with(context)之后。加载(“此处的url”)。到(viewHolder.iv\u pic)
它成功了。

显示实际结果和预期结果。或者至少显示实际结果,并解释错误。调用
viewHolder.iv_like.setColorFilter(null);viewHolder.iv_unlike.setColorFilter(null)
紧接着两个
Picasso.with(…)
callsThanks@pskink。。它起作用了…-)很好,您也可以在前两个
if
s的
else
分支中调用
setColorFilter(null)
,但是…显示实际结果和预期结果。或者至少显示实际结果,并解释错误。调用
viewHolder.iv_like.setColorFilter(null);viewHolder.iv_unlike.setColorFilter(null)
紧接着两个
Picasso.with(…)
callsThanks@pskink。。它起作用了…-)很好,您也可以在前两个
if
s的
else
分支中调用
setColorFilter(null)
,但是……您能详细说明一下吗?我试过了,但没用。你能详细说明一下吗?我试过了,但没用。