Как загрузить данные Json в выпадающий Spinner с использованием фрагментов Android - PullRequest
0 голосов
/ 31 декабря 2018

Мне нужно показать регистрационную форму с помощью Spinner с использованием фрагментов и получить данные с помощью 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 голосов
/ 01 января 2019

Примечание . Я предполагаю, что вы выполнили первые 3 шага из этого [вопроса] [1] и начнете со следующего Шаг 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 найти представление в упражнении или фрагменте, добавить запрос вызова, получить ответ и добавить ответ в адаптере счетчика. Initialize список строк вне метода onCreate

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) {

        }
    });
    }
...