android – 如何显示存储在数据库中的评级值为星数

我有一个谷歌地图应用程序,用户可以通过标记我们选择的餐厅评价我在sq lite数据库中存储评级值,当他们点击查看评级按钮时,我在滚动视图中显示名称和评级值为字符串.
现在我想将评级值显示为星号,即用户输入的方式.
android  – 如何显示存储在数据库中的评级值为星数

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
    android:text="Rate me"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20dp"
    android:id="@+id/rateme"
    android:layout_weight="0.00" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:text="Restaurent Name"
    android:ems="10"
    android:id="@+id/place"
    android:layout_weight="0.00" />
<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:stepSize="1.0"
    android:rating="2.0"
    android:layout_marginTop="64dp"
    android:layout_below="@+id/place"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"

    android:ems="10"
    android:id="@+id/rate"
    android:layout_weight="0.00" />

<Button
    android:text="Submit"
    android:layout_width="395dp"
    android:layout_height="wrap_content"
    android:id="@+id/submit"
    android:onClick="insert"/>

<Button
    android:text="view Rating"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/viewrate"
    android:layout_weight="0.00"
    android:onClick="display"/>
<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/button2" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >




        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:textStyle="bold" />
        <RatingBar
            android:id="@+id/rat"
            style="?android:attr/ratingBarStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"
            android:isIndicator="false"
            android:layout_weight="0.07" />
        />




    </LinearLayout>
</ScrollView>

 </LinearLayout>

解决方法:

为此,您可以使用RatingBar.见documentation.

在您的布局XML中:

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:stepSize="1.0"
    android:rating="2.0" />

在您的活动中:

RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar);


Float rating = 3.0; // 3.0 is from your database

// To show rating on RatingBar
ratingBar.setRating(rating);

更新:

要从RatingBar获得评级:

Float rating = ratingBar.getRating();

// Show rating on TextView
textView.setText("Rating: " + String.valueOf(rating));

要获得与附加图像类似的输出:

#如果餐厅数量固定. (例如:10):

>您应该在布局XML中添加10个RatingBar和10个TextView.
>为RatingBar(rb1,rb2,rb3 …..)和TextView(tv1,tv2,tv3 …..)使用不同的ID.
>从数据库获取评级值:

   Float rating1 = 1.0;    
   Float rating2 = 1.0;    
   Float rating3 = 3.0;   
   .............    
   .......................

>将评级值设置为RatingBar和TextView

   rb1.setRating(rating1);
   rb2.setRating(rating2);
   rb3.setRating(rating3);
   ................
   ......................

   tv1.setText("Restaurant One" + String.valueOf(rating1));
   tv2.setText("Restaurant Two" + String.valueOf(rating2));
   tv3.setText("Restaurant Three" + String.valueOf(rating3));
   ................
   .......................

#如果餐厅变量的数量:

>您应该使用ListView或RecyclerView.
>使用ArrayList存储从Google Map获得的每个餐馆数据(名称和评级).
>创建自定义适配器以在ListView / RecyclerView上的行项目视图中填充每个餐馆数据.这里的行项视图是一个包含RatingBar和TextView的XML.
>将餐厅ArrayList传递给适配器
>最后,从Adapter的getView()或onBindViewHolder()获取每个位置的ArrayList的餐厅名称和评级,并在TextView和RatingBar上显示.

这是一些很好的教程:

> Implementation of RatingBar
> Android ListView with Custom Adapter
> Android RecyclerView with Custom Adapter

希望这会有所帮助〜

上一篇:C. New Year and Rating 差分方程 思维


下一篇:在php和MySQL中简单喜欢/不喜欢评级系统