2013-08-27 3 views
1

Привет, я разбираю JSON, что-то вроде этого.Проанализируйте Json в clickable listview

@Override 
protected void onPostExecute(Void result) { 
    super.onPostExecute(result); 

    StringBuilder builder = new StringBuilder(); 
    for (Shop shop : this.response.shops) { 

     builder.append(String.format("<br>ID: <b>%s</b><br>Shop: <b>%s</b><br>Description: <b>%s</b><br><br>", shop.getId(), shop.getName(), shop.getDescription())); 

    } 

    capitalTextView.setText(Html.fromHtml(builder.toString())); 
    progressDialog.cancel(); 
} 

Теперь я хочу разобрать это в списке. Но я не мог его реализовать. Любая помощь? может быть образец кода, пожалуйста?

+0

Список как в обычном списке строк? – Rarw

+0

yap. но с изображениями и кликабельными – Kabe

+0

Итак, вы пытаетесь создать «ListView»? – Rarw

ответ

0

Что вам нужно сделать, это создать ListView при поддержке Adapter, который вы можете использовать для отображения этого содержимого. Есть много учебников о том, как это сделать - here's one.

Я предлагаю вам создать Class для представления того, что вы показываете в списке. Из того, что я вижу выше, он выглядит как магазин. Затем вы должны установить значения этого объекта как бы то, что вы получаете от JSON, и добавить этот объект - по одному для каждого магазина - к Adapter. Это позволит вам отображать содержимое в файле ListView, которое вы можете разместить в любом случае.

0

Существует really cool library, который выполняет именно то, что вы ищете, и упрощает реализацию в процессе. Он будет выполнять сетевой запрос для вас, поэтому вам не нужно беспокоиться о AsyncTask или что-то еще, он использует GSON для включения ваших собственных моделей (классов) в этот процесс.

Для instace, скажем, ваш класс:

public class Shop { 

@Expose 
@SerializedName("shop_name") 
private String shopName = null; 
public void setShopName(String shopName) { 
    this.shopName = shopName; 
} 
public String getShopName() { 
    return shopName; 
} 

@Expose 
@SerializedName("shop_image") 
private String shopImage = null; 
public void setShopImage(String shopImage) { 
    this.shopImage = shopImage; 
} 
public String getShopImage() { 
    return shopName; 
} 
} 

Тогда вы можете сделать простой запрос и превратиться в ListView, как это:

public void getShopDetails(final Context context) throws Exception { 
    Ion.with(context, "http://example.com/api/shopitems") 
      .as(new TypeToken<List<Shop>>(){}); 
    .setCallback(new FutureCallback<List<Shop>>() { 
     @Override 
     public void onCompleted(Exception e, List<Shop> shopitems) { 
      //Set your custom adapter 
     } 
    }); 
} 

Ваш заказ адаптер может быть что-то очень простое, и вам вообще не нужно обращаться с JSON, просто используйте свой пользовательский класс getter и seters. Надеюсь, это поможет!

+0

Спасибо, что он – Kabe

Смежные вопросы