2016-11-22 53 views
0

我正在使用lib FlexibleAdapter像这样在android studio中加载JSON API。如何从模型函数中加载所有的Arraylist?

public void createHolderSectionsDatabase(int size, int headers) { 
    databaseType = DatabaseType.MODEL_HOLDERS; 
    HeaderHolder header = null; 
    mItems.clear(); 
    int lastHeaderId = 0; 
    for (int i = 0; i < size; i++) { 
     header = i % Math.round(size/headers) == 0 ? newHeaderHolder(++lastHeaderId) : header; 
     mItems.add(newItemHolder(i + 1, header)); 
    } 
} 

private HeaderHolder newHeaderHolder(int i) { 
    HeaderModel model = new HeaderModel("H" + i); 
    model.setTitle("Header " + i); 
    return new HeaderHolder(model); 
} 

private ItemHolder newItemHolder(int i, HeaderHolder header) { 
    ItemModel model = new ItemModel("I" + i); 
    model.setTitle("Holder Item " + i); 
    model.setSubtitle("Subtitle " + i); 
    return new ItemHolder(model, header); 
} 

上面的代码只加载循环模型项目中的数据。

我可以申请JSON API,如:

如何更改如下代码:

/*  for (int i = 0; i < size; i++) { 
      header = i % Math.round(size/headers) == 0 ? newHeaderHolder(++lastHeaderId) : header; 
      mItems.add(newItemHolder(i + 1, header)); 
     }*/ 

像这样:

listArrayFromJSON = getArrayJSON(); //get JSON with GSON request 
    mItems.addAll(ListArrayFromJSON,header); //not add` 

回答

0

我不知道你的JSON字符串的结构,但是,你可以更新问题或从下面启发

public class DataHolder{ 
    private ArrayList<ItemHolder> items; //json object name 
    private ArrayList<HeaderHolder> headers; //json object name 

    public Arraylist<ItemHolder> getItems(){ 
     return items; 
    } 

    public Arraylist<HeaderHolder> getHeaders(){ 
     return items; 
    } 
} 

DataHolder holder = new Gson().fromJson(jsonString, DataHolder.class); 
mItems.addAll(holder.getItems()); 
mHeaders.addAll(holder.getHeaders()); 
+0

如何将两个模型'HeaderModel'和'ItemModel'合并为一个ArrayList。所以当不喜欢'mItems.addAll(ListArrayFromJSON,header); //不是'但是像这样:'mItems.addAll(ListArrayHeaderAndItemFromJSON);' – Izzamed

+0

它们是不同的对象吗? – mismanc

+0

Yess,对,他们是不同的对象 – Izzamed