需求是根据一个字符串的值,动态改变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方法的问题。
问题是 刚显示在屏幕上的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方法的问题。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货