android自定义数组,如何在android中的自定义采用者中使用json数组列表?

Xypqt.png

STEP1

我有一个JSON 2列表(菜单和结果)

{

"page": 1,

"menus": [ { m1:"v1" },{ ... },..., "count_menus": 10],

"results": [ { r1:"v1",r2:"v2" },{ ... },"count_results": 273 ]

, "total_count": 5450, "total_pages": 283

。 }

问题1:首先,json结构是否正确?

---------

我创建了一个MedicAPI.java类:

public class MedicApi {

private static Retrofit retrofit = null;

public static Retrofit getClient() {

if (retrofit == null) {

retrofit = new Retrofit.Builder()

.addConverterFactory(GsonConverterFactory.create())

.baseUrl("http://www.example.com/api/")

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

.addConverterFactory(GsonConverterFactory.create())

.build();

}

return retrofit;

}

}

public interface MedicService {

@GET("service/last.php")

Call getTopRatedMovies(

@Query("api_key") String apiKey,

@Query("language") String language,

@Query("page") int pageIndex

);

}

而现在,我创建了一些模型:

public class LastMedic {

@SerializedName("page")

@Expose

private Integer page;

@SerializedName("results")

@Expose

private List results = new ArrayList();

@SerializedName("menus")

@Expose

private List menus = new ArrayList();

@SerializedName("total_counts")

@Expose

private Integer totalCounts;

@SerializedName("total_pages")

@Expose

private Integer totalPages;

public Integer getPage() {

return page;

}

public void setPage(Integer page) {

this.page = page;

}

public List getResults() {

return results;

}

public void setResults(List results) {

this.results = results;

}

public List getMenus() {

return menus;

}

public void setMenus(List menus) {

this.menus = menus;

}

public Integer gettotalCounts() {

return totalCounts;

}

public void settotalCounts(Integer totalCounts) {

this.totalCounts = totalCounts;

}

public Integer getTotalPages() {

return totalPages;

}

public void setTotalPages(Integer totalPages) {

this.totalPages = totalPages;

}

}

而且两种模式菜单和结果为LastMedicMenu和LastMedicResults

所以我觉得我的代码是完整的API。

步骤1,工作在另一个项目

STEP2

这是我的样本数据Dataserver.java

public class DataServer {

private DataServer() {

}

public static List getMultipleItemData() {

List list = new ArrayList<>();

for (int i = 0; i <= 5; i++) {

thisCounter++;

list.add(new MultipleItem(MultipleItem.IMG_TEXT, MultipleItem.IMG_TEXT_SPAN_SIZE_MIN,"menu"));

}

for (int i = 0; i <= 10; i++) {

list.add(new MultipleItem(MultipleItem.SERVICE_LIST, MultipleItem.SERVICE_SPAN_SIZE));

}

}

}

public class MultipleItem implements MultiItemEntity {

public static final int TEXT = 1;

public static final int TEXT_SPAN_SIZE = 4;

public static final int IMG = 2;

public static final int IMG_SPAN_SIZE = 1;

public static final int IMG_TEXT = 3;

public static final int IMG_TEXT_SPAN_SIZE = 4;

public static final int IMG_TEXT_SPAN_SIZE_MIN = 2;

public static final int SERVICE_LIST = 4;

public static final int SERVICE_SPAN_SIZE = 4;

private int itemType;

private int spanSize;

public MultipleItem(int itemType, int spanSize, String content) {

this.itemType = itemType;

this.spanSize = spanSize;

this.content = content;

}

public MultipleItem(int itemType, int spanSize) {

this.itemType = itemType;

this.spanSize = spanSize;

}

public int getSpanSize() {

return spanSize;

}

public void setSpanSize(int spanSize) {

this.spanSize = spanSize;

}

private String content;

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

@Override

public int getItemType() {

return itemType;

}

}

步骤2,适用于样本数据。

比如我可以在adobter使用此代码绑定XML:

protected void convert(BaseViewHolder helper, MultipleItem item) {

switch (helper.getItemViewType()) {

case MultipleItem.TEXT:

helper.setText(R.id.tv, item.getContent());

STEP3

现在,我想合并第一步和第二步。

我的意思是我想用json数据代替样本数据。

例如,对于这样的:

for (int i = 0; i <= 5; i++) {

thisCounter++;

list.add(new MultipleItem(MultipleItem.IMG_TEXT, MultipleItem.IMG_TEXT_SPAN_SIZE_MIN,"menu"));

}

我想使用JSON 菜单名单。

并为此

for (int i = 0; i <= 10; i++) {

list.add(new MultipleItem(MultipleItem.SERVICE_LIST, MultipleItem.SERVICE_SPAN_SIZE));

}

我想用导致JSON列表。

步骤4 这段代码是真实的负载列表形式的服务器?

callLastMedicApi().enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

List results = fetchResults(response);

List menus = fetchResults2(response);

}

@Override

public void onFailure(Call call, Throwable t) {

t.printStackTrace();

//

}

});

private Call callLastMedicApi() {

return medicService.getTopRatedMovies(

getString(R.string.my_api_key),

"en_US",

currentPage

);

}

如果是的话,怎样才能使用这段代码和DataServer类以及MultipleItem类?

我希望能做到这一点(例如):

protected void convert(BaseViewHolder helper, MultipleItem item) {

switch (helper.getItemViewType()) {

case MultipleItem.TEXT:

helper.setText(R.id.tv, item.getMenu(M1));

2017-04-11

elma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值