Search code examples
javaandroidlistviewratingratingbar

RatingBar deosn't show exact rating


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:

  • Rating of the first item = 4.3
  • Rating of the second item = 4.5

My current ListView

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>

Solution

  • 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"));