Я использую retrofit2
и получаю список категорий.
Категория модели:
public class Category implements Serializable {
@SerializedName("catid")
private int catid;
@SerializedName("title")
private String title;
@SerializedName("qcount")
private String qcount;
public int getCatid() {
return catid;
}
public void setCatid(int catid) {
this.catid = catid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Модифицированный вызов и обратный вызов:
Call<List<Category>> call = apiInterface.getCategories();
call.enqueue(new Callback<List<Category>>() {
@Override
public void onResponse(Call<List<Category>> call, Response<List<Category>> response) {
hidePDialog();
if(response.isSuccessful()){
List<Category> cats = response.body();
//codes to convert cats to array.
// i need cats title to insert in array.
}
}
@Override
public void onFailure(Call<List<Category>> call, Throwable t) {
}
});
Спиннер:
s1= findViewById(R.id.spinner);
ArrayAdapter<String> adap=new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_item, cat_title);
s1.setAdapter(adap);
Как показать титр кота в счетчике?
Пример:
cats:
[{
"catid": 1,
"title": "windows"
},
{
"catid": 2,
"title": "Android",
}
]
Все вышеперечисленные коды в одном упражнении.
Пожалуйста, помогите мне.
Заранее спасибо.я редактирую деятельность, но она не работает!в чем проблема:
public class NewPostActivity extends AppCompatActivity {
private ArrayList<String> cat_title;
Spinner s1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_post);
CatsRequest();
String[] cat_title1 = (String[]) cat_title.toArray(new String[cat_title.size()]);
s1= findViewById(R.id.spinner);
ArrayAdapter<String> adap=new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_item, cat_title1);
s1.setAdapter(adap);
s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
private void CatsRequest(){
APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
Call<List<Category>> call = apiInterface.getCategories();
call.enqueue(new Callback<List<Category>>() {
@Override
public void onResponse(Call<List<Category>> call, Response<List<Category>> response) {
hidePDialog();
if(response.isSuccessful()){
List<Category> cats = response.body();
ArrayList<String> cat_title= new ArrayList<String>();
for(Category cat: cats){
cat_title.add(cat.getTitle());
}
}
}
@Override
public void onFailure(Call<List<Category>> call, Throwable t) {
}
});
}
}
Не удалось запустить.ошибка: вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод int java.util.ArrayList.size () для пустой ссылки на объект