如何使用Android片段将Json数据加载到下拉微调器中

时间:2018-12-31 07:37:58

标签: java android json android-fragments retrofit

我需要使用Spinner使用Fragment显示注册表单,并使用Json获取数据

这是一种注册表。底部有更改语言按钮,它将重置表格并以阿拉伯语/英语显示。

[  
   {  
      "Id":1,
      "TitleEN":"Kuwait",
      "TitleAR":"الكويت",
      "CurrencyId":1,
      "CurrencyEN":"Kuwaiti Dinar",
      "CurrencyAR":"دينار كويتى",
      "CodeEN":"KWD",
      "CodeAR":"د.ك",
      "Code":"965"
   },
   {  
      "Id":2,
      "TitleEN":"Emirates",
      "TitleAR":"الإمارات",
      "CurrencyId":2,
      "CurrencyEN":"Emirati Dirham",
      "CurrencyAR":"درهم إماراتي",
      "CodeEN":"AED",
      "CodeAR":"درهم",
      "Code":"971"
   },
   {  
      "Id":3,
      "TitleEN":"Saudi Arabia",
      "TitleAR":"السعودية",
      "CurrencyId":3,
      "CurrencyEN":"Saudi Riyal",
      "CurrencyAR":"ريال سعودى",
      "CodeEN":"SAR",
      "CodeAR":"ر.س",
      "Code":"966"
   }
]

1 个答案:

答案 0 :(得分:0)

注意。我假设您已经执行了此[问题] [1]的前3个步骤 将从以下内容开始 第1步 在xml中添加微调器

 <Spinner
    android:id="@+id/spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:prompt="@string/spinner_title" />

第2步ApiInterface类中,添加以下代码

@GET("/app/app.asmx/GetCountries")
Call<List<Country>> getCountry();

第3步 通过名称Country

创建新的模型类
public class Country {

@SerializedName("Id")
@Expose
private Integer id;
@SerializedName("TitleEN")
@Expose
private String titleEN;
@SerializedName("TitleAR")
@Expose
private String titleAR;
@SerializedName("CurrencyId")
@Expose
private Integer currencyId;
@SerializedName("CurrencyEN")
@Expose
private String currencyEN;
@SerializedName("CurrencyAR")
@Expose
private String currencyAR;
@SerializedName("CodeEN")
@Expose
private String codeEN;
@SerializedName("CodeAR")
@Expose
private String codeAR;
@SerializedName("Code")
@Expose
private String code;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getTitleEN() {
    return titleEN;
}

public void setTitleEN(String titleEN) {
    this.titleEN = titleEN;
}

public String getTitleAR() {
    return titleAR;
}

public void setTitleAR(String titleAR) {
    this.titleAR = titleAR;
}

public Integer getCurrencyId() {
    return currencyId;
}

public void setCurrencyId(Integer currencyId) {
    this.currencyId = currencyId;
}

public String getCurrencyEN() {
    return currencyEN;
}

public void setCurrencyEN(String currencyEN) {
    this.currencyEN = currencyEN;
}

public String getCurrencyAR() {
    return currencyAR;
}

public void setCurrencyAR(String currencyAR) {
    this.currencyAR = currencyAR;
}

public String getCodeEN() {
    return codeEN;
}

public void setCodeEN(String codeEN) {
    this.codeEN = codeEN;
}

public String getCodeAR() {
    return codeAR;
}

public void setCodeAR(String codeAR) {
    this.codeAR = codeAR;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

}

第4步 在活动或片段中查找视图,然后添加调用请求并获得响应,然后在Spinner适配器中添加响应。InitializeonCreate方法之外的字符串列表

List<String> codes = new ArrayList<String>();
APIInterface apiInterfacePages;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    apiInterfacePages= PageApiClient.getRetrofit().create(APIInterface.class);
    Call<List<Country>> getCountry = apiInterfacePages.getCountry();
    getCountry.enqueue(new Callback<List<Country>>() {
        @Override
        public void onResponse(Call<List<Country>> call, Response<List<Country>> response) {
            countryList = response.body();
            for (int i = 0; i < countryList.size(); i++) {
                codes.add(countryList.get(i).getCode());

            }
            ArrayAdapter<String> adapterTime = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, codes);
            spinner.setAdapter(adapterTime);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                    Toast.makeText(MainActivity.this, "" + countryList.get(i).getTitleEN(), Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {

                }
            });

        }

        @Override
        public void onFailure(Call<List<Country>> call, Throwable t) {

        }
    });
    }