Я пытаюсь добавить элемент в список и установить адаптер.Но я не знаю, что не так, потому что я не могу установить элементы в список -> адаптер.
Основная активность:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Json
new GetDataTask().execute();
//Datas
categoryModelArrayList = new ArrayList<>();
categoryAdapter = new CategoryAdapter(MainActivity.this, categoryModelArrayList);
ListView listView = findViewById(R.id.listView);
listView.setAdapter(categoryAdapter);
//Drawer
DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@SuppressLint("StaticFieldLeak")
private class GetDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
String url = Constant.baseUrl+"?json=get_category_index";
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("categories");
for (int i = 0; i < jsonArray.length(); i++) {
CategoryModel categoryModel = new CategoryModel();
JSONObject jo = jsonArray.getJSONObject(i);
String id = jo.getString("id");
String title = jo.getString("title");
Log.d("Veri", id);
categoryModel.setCatID(id);
categoryModel.setCatTitle(title);
categoryModelArrayList.add(categoryModel);
}
} catch (JSONException e) {
e.printStackTrace();
Log.i("Error", e.getLocalizedMessage());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Anything you want
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(stringRequest);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if(categoryModelArrayList.size() > 0) {
categoryAdapter.notifyDataSetChanged();
} else {
System.out.println("No data");
}
}
}
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
protected void onResume(){
super.onResume();
}
@Override
protected void onPause(){
super.onPause();
}
@Override
protected void onDestroy(){
super.onDestroy();
}
Я вытягиваю данные скод, который вы видите.Данные с сервера поступают успешно.Я пытаюсь отправить эти данные на model
, а затем на adapter
.Но так или иначе это не происходит.Я уверен, что что-то забыл, но я не знаю, что :) Есть идеи?