2016-02-29 6 views
9

Ich benutze Bewertungsleisten in meiner Android-Anwendung. Aber es zeigt nur volle Sterne, wenn ich auch halbe Sterne will.Android-Bewertungsleiste zeigt nur volle Sterne, keine halben Sterne zu

Ich habe eine SQLite-Zeile mit einem Namen und dem ratingValue eingefügt, darin steht der ratingValue als "3.5", aber meine Anwendung verwandelt ihn in "4". Auch wenn meine Stepsize „0,5“ ist, auch der Standardwert geändert wird „3“

EDIT: Wenn Sie auf den listrow klicken, Dialoge es eine andere Bewertungsleiste, die man „Rate“ und wenn Sie auf eine Schaltfläche, sendet es den Bewertungswert in die Datenbank. Die listitem Bewertungsleiste ist nur für die „durchschnittliche“ Bewertung zeigt, aber das ist, wo es schief geht, ist es, den Wert abrundet

EDIT 2: stellen Sie die Schrittgröße auf 0,1 und nun seltsamerweise nur der mittlere Stern nimmt die float number ... Der Rest der Sterne sind immernoch nur voll Und wenn ich die Bewertung auf 1,2 setze, akzeptiert nur der zweite Stern den Float-Wert, 0,2 den ersten usw. Aber die anderen Sterne (nicht in diesem Bereich) sind nur oder voll oder leer

Hier einige Code

ListItem_la yout

<TableRow>  
    <RatingBar 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/sportsRatingBar" 
     android:gravity="center_horizontal" 
     android:focusableInTouchMode="false" 
     android:isIndicator="true" 
     android:clickable="false" 
     android:focusable="false" 
     android:layout_column="1" 
     android:rating="1.1" 
     android:stepSize="0.1" /> 

ListItem

if(ratingBar!=null) { 
       ratingBar.setRating(p.getRating()); 
       ratingBar.setTag(p.getId()); 
      } 

wiederverwendbare Klasse

public float getRating() { return Rating; } 

SQLite Tabellenspalte für die Bewertung

COLUMN_RATING + " real not null);" 

Und zuletzt, von der Datenbank erhalten

c.getFloat(COLUMN_RATING_COL)); 

einige Bilder after setting first ratingbar to 2.6

+0

Ich habe die Antwort gefunden, zum Teil aufgrund @ Dave Ranjan und teilweise mit einem Stil hinzufügen, hier zu Bewertungsleiste, http://stackoverflow.com/a/31307775/5985522 – sander338

Antwort

3

Ich denke, Sie brauchen keine Bibliothek dafür, ich habe es gerade versucht, und es funktioniert.

<android.support.v7.widget.AppCompatRatingBar 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="?android:attr/ratingBarStyle" 
    android:background="@android:color/holo_red_dark" 
    android:id="@+id/ratingBar1" 
    android:stepSize="0.1" 
    android:rating="2.5"/> 

Ich setze Startwert auf 4,5 und es funktioniert so.

RatingBar ratingBar = (RatingBar) findViewById(R.id.coloredRatingBar1); 
    ratingBar.setRating(4.8f); 
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
     @Override 
     public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 
      Log.i(TAG, "onRatingChanged: rating : "+rating); 
     } 
    }); 
+0

das hilft mir nicht, wenn ich die Werte aus der Datenbank lesen, sagt es den richtigen Wert, ein float, aber von dem Moment an, den ich möchte zeige es in meine Bewertungsleiste, es ist aufgerundet – sander338

+1

Ich habe versucht, die Bewertung dynamisch wie diese 'ratingBar.setRating (4.5f);' und es hat funktioniert. Bitte versuchen Sie es gleich. –

+0

danke für die Hilfe, ich bin jetzt ein bisschen weiter (Editierte in meiner Frage), aber der Wert muss von der SQLite-Datenbank kommen. und mit der Datenbank "akzeptiert" nur der mittlere Stern den Float ... – sander338

1

Vor allem die Art und Weise der Bewertung Widget zu erklären ist, definiert es keine Werte annehmen kann. Clickable wird auf false gesetzt und isIndicator wird auf true gesetzt. So akzeptieren Eingabe definieren wird das Widget in der folgenden Art und Weise

<RatingBar 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/sportsRatingBar" 
     android:gravity="center_horizontal" 
     android:rating="2.5" 
     android:stepSize="0.5" /> 

Für die immer die Werte nicht sicher, wie die Variable Rating gesetzt wird

Schauen Sie sich das Bild um, wie das Widget sieht like!

+0

die RatingBars in der Liste kann nicht manuell geändert werden, so dass es ein Indikator sein muss und das anklickbare auf false gesetzt wird, so kann ich ein Dialogfeld geben, das erscheint, wenn Sie auf ein listrow klicken. – sander338

+0

In diesem Fall war Ihr Code in Ordnung. Wenn Sie den getRating Code teilen könnten, könnten Sie helfen. –

+0

das wäre die wiederverwendbare Klasse, es ist nur diese Methode;) – sander338

Verwandte Themen