2012-03-30 5 views
2

Ich bin erfolgreich Parser JSON und Anzeige in Listview.
In der Listenansicht habe ich Name, Stadt und Bewertung angezeigt, deren Werte bereits in der Datenbank gespeichert sind. Ich möchte dort die Bewertungsleiste anstelle der Bewertungsnummer anzeigen. Auch sollte es keine Benutzerinteraktion unterstützen, ich meine, ich möchte Bewertungsleiste nur zur Information anzeigen.
Wie kann ich das tun ??
Hilfe !!Wie wird die Bewertungsleiste in Android angezeigt?

 // Getting Array of Root 
     root = json.getJSONArray(TAG_ROOT); 

     // looping through All root 
     for (int i = 0; i < root.length(); i++) { 
      JSONObject c = root.getJSONObject(i); 

      // Storing each json item in variable 

      String name = c.getString(TAG_NAME); 
      String town = c.getString(TAG_TOWN); 
      String totalRating = c.getString(TAG_RATING); 

      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 



       // adding each child node to HashMap key => value 

       map.put(TAG_NAME, "Name: " + name); 
       map.put(TAG_TOWN, "Town: " + town); 
       map.put(TAG_RATING, "Rating: " + totalRating); 

       // adding HashList to ArrayList 
       myList.add(map); 

     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    /** 
    * Updating parsed JSON data into ListView 
    * */ 
    ListAdapter adapter = new SimpleAdapter(this, myList, 
      R.layout.list_item, new String[] { TAG_NAME, TAG_TOWN, 
        TAG_RATING }, new int[] { R.id.name, R.id.address, 
        R.id.rating }); 

    setListAdapter(adapter); 

list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
    android:id="@+id/name" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="2dip" 
    android:paddingTop="6dip" 
    android:textColor="#006fa8" 
    android:textSize="16sp" 
    android:textStyle="bold" /> 


    <TextView 
    android:id="@+id/address" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="2dip" 
    android:textColor="#acacac" > 
    </TextView> 

    <TextView 
    android:id="@+id/rating" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="2dip" 
    android:textColor="#acacac" > 
</TextView> 

</LinearLayout> 

Antwort

10

Hallo Unten Code

<RatingBar 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:isIndicator="true" 
    android:numStars="5" 
    android:stepSize="1" 
    android:rating="5" 
    android:id="@+id/pop_ratingbar" 
    style="?android:attr/ratingBarStyleSmall" 
/> 

RatingBar ratingBar = (RatingBar) findviewbyid(R.id.pop_ratingbar); 
ratingBar.setRating(4.0f); 
+0

Ich schrieb den folgenden Code '........ String totalRating = c.getString (TAG_RATING); RatingBar BewertungBar = (RatingBar) findViewById (R.id.pop_ratingbar); \t \t \t \t float gesamtRatingValue = Float.parseFloat (totalRating); \t \t \t \t ratingBar.setRating (totalRatingValue); HashMap map = neue HashMap (); map.put (TAG_NAME, "Name:" + Name); .................... 'aber gibt den Force-Close-Fehler. – captaindroid

+0

@captainpirate - Können Sie Ihren Logcat zeigen, da ich nicht denke, dass ein Fehler beim Setzen des Ratingwertes vorliegt, wenn Ihr TAG_RATING in Float konvertierbar ist. –

+0

RatingBar wird jedem Listeneintrag angezeigt, aber wenn ich 'ratingBar.setRating (totalRatingValue); 'Dann gibt meine Programme Force Close Fehler. – captaindroid

6

ein Objekt von Bewertungsleiste erstellen und die entsprechenden Bewertungen mit Float-Wert zuweisen.

RatingBar ratingBar = null; 
ratingBar.setRating(4.0f); // put the rating number you are receiving through json here. 

Hier erhalten Sie in String, also müssen Sie Cast in Float eingeben.

 String totalRating = c.getString(TAG_RATING); 
    Float.parseFloat(totalRating);