2017-01-27 1 views
-1

So wird eine Schleife angezeigt, um alle Cuisine-Daten anzuzeigen (New American, Japanese, Asia). In RestaurantRVAdapter ich so benutzen -
List<Restaurant> restaurant; // There is a data in restaurant holder.tv_cuisine.setText(restaurant.getCuisine().get(0).getCuisineName());So zeigen Sie alle Daten mit dem Looping im JSON-Array an

Es zeigt nur, New American weil ich .get(0).getCuisineName() verwenden

[ 
    {...}, 
    {...}, 
    {...}, 
    {...}, 
    { 
    "restaurant_id": "41", 
    "restaurant_logo": "52ee9f67ce39f62d9c0b1538ca26646f.jpg", 
    "restaurant_name": "Shwe Lar Food Restaurant", 
    "street_address": "Napier Road", 
    "phone_no": "09940255323430", 
    "rating": "4.5", 
    "cuisine": [ 
     { 
     "cuisine_name": "New American" 
     }, 
     { 
     "cuisine_name": "Japanese" 
     }, 
     { 
     "cuisine_name": "Asia" 
     } 
    ], 
    } 
] 
+0

was/wie erscheinen Sie Ihre Liste der Küche zu? – njzk2

+0

Ja. Ich möchte eine Liste von Küchen zeigen. – WPG

+1

poste deinen Code, damit ich dir eine Antwort vorschlagen kann. –

Antwort

0

In Ihrem RecyclerView Adapter Code wie folgt aktualisieren.

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Restaurant rest = restaurant.get(position); 
    holder.tv_cuisine.setText(rest.getCuisineName()); 
} 
+0

Nein, in der Restaurantliste gibt es kein .getCuisineName(). Restaurantliste WPG

+0

Posten Sie Ihre 'Restaurant' Modellklasse. – Shashanth

0

Zuerst erhalten Sie jsonArray dann verwendet fori lool alle Json-Objekt zu erhalten, dann können Sie EXAT Daten erhalten, wie als

JSONArray jsonArray = obj.getJSONArray("cuisine"); 
    List<JSONObject> postList = new ArrayList<JSONObject>(); 

for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject jsonPost = jsonArray.getJSONObject(i); 
         postList.add(jsonPost); 
        } 
        mAdapter.updateList(postList, mStockstype); 

in Adapter Sie eine Methode wie

public void updateList(List<JSONObject> list, String type) { 
    mDataList.clear(); 
    mDataList.addAll(list); 
    notifyDataSetChanged(); 
} 

machen Dann erhalten Sie im Adapter Sie Daten

JSONObject object = mDataList.get(position); 
    String name = object.optString("cuisine_name"); 
+0

Wo bekomme ich JsonArray-Code? im RV-Adapter? – WPG

+0

fügen Sie diesen Code in Ihre Klasse wie Fragment oder Aktivität, wo Sie Adapter zu listView setzen –

+0

teilen Sie Ihren Adapter –

0

Erstellen Komma getrennt Text für Küche,

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Restaurant rest = restaurant.get(position); 
    List<Cuisine> cuisineList = rest.getCuisine(); 
    // Build comma separated text for Cuisines 
    String strCuisine = ""; 
    for(i=0; i<cuisineList.size(); i++) { 
     strCuisine.concat(cuisineList.get(i).getCuisineName()); 
     strCuisine.concat(","); 
    } 
    holder.tv_cuisine.setText(strCuisine); 
} 
+0

Hallo, sagt es kann Methode nicht auflösen getAdapterPosition(); Und dann concat; in String kann nicht auf com.wp.model.Cuisine 'cuisineList.get (i)' – WPG

+0

angewendet werden Einfach 'position' verwenden. Sehen Sie sich Bearbeiten an. Sie können jedoch auch 'halter.getAdapterPosition' verwenden. – Wizard

+0

Danke, aber wie concat zu lösen String to Model (cuisineList.get (i)) – WPG

0
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Restaurant rest = restaurant.get(position); // get the specific restaurent 
    List<Cuisine> cuisineList = rest.getCuisine(); // list to carry cuisineList 
    String cuisineString = ""; //string to carrying cuisines 
    for(int i=0; i<cuisineList.size(); i++) { 
     cuisineString.concat(cuisineList.get(i)); 
     cuisineString.concat(","); 
    } 
    holder.tv_cuisine.setText(strCuisine); 
} 
1

Es mag dieses sollte,

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Restaurant rest = restaurant.get(position); // get the specific restaurent 
    List<Cuisine> cuisineList = rest.getCuisine(); // list to carry cuisineList 
    String cuisineString = ""; //string to carrying cuisines 
    for(int i=0; i<cuisineList.size(); i++) { 
     cuisineString.concat(cuisineList.get(i).getCuisineName()); 
     cuisineString.concat(","); 
    } 
    cuisineString = cuisineString.substring(0, cuisineString.length() - 1);// Removes last , 
    holder.tv_cuisine.setText(cuisineString); 
} 
Verwandte Themen