I've added RatingBar
to each item of my ListView
. It works well but it doesn't show exact rating. For example if the rating is 4.3 it has to show part of the 5th star, but it DOESN'T.
Screenshot:
Do you have any idea, where the problem could be?
I'd be glad for any help or suggestion.
ratingsbar.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background"
android:drawable="@drawable/ic_action_star_rate1" />
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/ic_action_star_rate1" />
<item android:id="@+android:id/progress"
android:drawable="@drawable/ic_action_star_rate" />
</layer-list>
Method in the getView() in my adapter
if(clubs.getInt("clubRating")!= 0){
holder.rating.setRating((float) (clubs.getInt("clubRating")));
}else{
holder.rating.setRating(0);
}
item layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="220dp"
android:minHeight="220dp"
android:background="@drawable/club_item"
android:id="@+id/clubAll" >
<ImageView
android:id="@+id/club_poster"
android:layout_width="match_parent"
android:layout_height="220dp"
android:src="@drawable/placeholder"
android:scaleType="centerCrop" />
<ImageView
android:id="@+id/club_vip_small"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="fitXY"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
/>
<TextView
android:id="@+id/club_events_true"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:padding="2dp"
android:textSize="13sp"
android:textColor="#FFFFFF"
android:gravity="center_vertical"
android:paddingRight="7dp"
android:text="@string/events_true"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:background="#00C659"
android:drawableLeft="@drawable/eventsup" />
<TextView
android:id="@+id/club_discounts_true"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:padding="2dp"
android:paddingRight="7dp"
android:textSize="13sp"
android:gravity="center_vertical"
android:textColor="#FFFFFF"
android:text="@string/discounts_true"
android:layout_alignParentLeft="true"
android:layout_below="@id/club_events_true"
android:background="#F6D100"
android:drawableLeft="@drawable/golden_discount" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="90dp"
android:minHeight="75dp"
android:layout_alignParentBottom="true"
android:background="#FFFFFF"
android:id="@+id/club_head_info" >
<com.example.android.ImageViewRounded
android:id="@+id/club_club_logo"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/placeholder_club"
android:scaleType="fitXY"
android:layout_marginLeft="5dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<com.example.android.AutofitTextView
android:id="@+id/club_distance_small"
android:layout_width="57dp"
android:layout_height="57dp"
android:background="@drawable/meters_back"
android:layout_marginLeft="5dp"
android:gravity="center"
android:singleLine="true"
android:padding="3dp"
android:textSize="16sp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/club_club_logo"
android:id="@+id/club_foot_info" >
<TextView
android:id="@+id/club_type_fake"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bar"
android:paddingRight="4dp"
android:visibility="invisible"
android:textStyle="bold"
android:paddingLeft="4dp"
android:paddingTop="2dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:paddingBottom="2dp"
android:textAllCaps="true"
android:textSize="11sp"
android:textColor="#FFFFFF"
android:layout_marginRight="4dp"
android:background="@drawable/type_btn_bar" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:id="@+id/club_typerate"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<TextView
android:id="@+id/club_type_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bar"
android:paddingRight="4dp"
android:textStyle="bold"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:paddingLeft="4dp"
android:textAllCaps="true"
android:textSize="11sp"
android:textColor="#FFFFFF"
android:background="@drawable/type_btn_bar" />
<RatingBar
android:id="@+id/club_rating_small"
android:padding="1dp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_toRightOf="@id/club_type_small"
android:layout_centerVertical="true"
android:isIndicator="true"
android:stepSize="0.01"
android:numStars="5"
style="@style/foodRatingBar"
/>
</RelativeLayout>
<TextView
android:id="@+id/club_title_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="16sp"
android:singleLine="true"
android:text="ROXY Prague"
android:ellipsize="end"
android:padding="1dp"
android:layout_below="@id/club_type_fake"
android:layout_marginTop="3dp"
android:textColor="#000"
android:textStyle="bold"
/>
<TextView
android:id="@+id/club_openclose_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="14sp"
android:gravity="fill"
android:text="@string/open"
android:textColor="#00AC00"
android:layout_below="@id/club_title_small"
/>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
In getView()
, you request the rating as an integer and then cast it to a float. Therefore the decimal values are lost. Store a float value instead and then use getFloat
:
holder.rating.setRating(clubs.getFloat("clubRating"));