需求是根据一个字符串的值,动态改变listview中的ratingbar星星的个数和颜色。
问题是 刚显示在屏幕上的ratingbar个数是对的,但是颜色没有变。而滑动隐藏那一项后再瞬间拉回来就变色了。
比如列表第一项本应该是红色的,但是显示的是默认绿色的,如果下拉把第一项滑出顶部然后再拉回来,ratingbar就成红色的了。
Adapter里相关代码:
public RatingBar assess_rating;
public LayerDrawable stars;
String assess=XXtextview.getText().toString();
if(assess.equals("一级")){
         viewHolder.assess_rating.setNumStars(1);
         viewHolder.assess_rating.setRating(1);
         viewHolder.stars.getDrawable(2).setColorFilter(ContextCompat.getColor(context, R.color.level_1), PorterDuff.Mode.SRC_ATOP);
        }else if(assess.equals("二级")){
         viewHolder.assess_rating.setNumStars(2);
         viewHolder.assess_rating.setRating(2);
         viewHolder.stars.getDrawable(2).setColorFilter(ContextCompat.getColor(context, R.color.level_2), PorterDuff.Mode.SRC_ATOP);
        }else if(assess.equals("三级")){
         viewHolder.assess_rating.setNumStars(3);
         viewHolder.assess_rating.setRating(3);
         viewHolder.stars.getDrawable(2).setColorFilter(ContextCompat.getColor(context, R.color.level_3), PorterDuff.Mode.SRC_ATOP);
        }else if(assess.equals("特级")){
         viewHolder.assess_rating.setNumStars(5);
         viewHolder.assess_rating.setRating(5);
         viewHolder.stars.getDrawable(2).setColorFilter(ContextCompat.getColor(context, R.color.level_5), PorterDuff.Mode.SRC_ATOP);
        }
不知道是listview刷新的问题还是LayerDrawable.setColorFilter方法的问题。