В этой части приложения я получал данные с сервера, используя Blogger API и модернизацию, я использовал метод onNavigationItemSelected
, когда конкретный элемент щелкнул по методу getItemsByLabel
, вызвавшему, какой метод модернизации onResponse
будет вызывать, и получая данные для выбранной категории.проблема заключается в том, что он работает в первый раз, когда я нажимаю на элемент, и после этого вид не меняется, чтобы получить дополнительные пояснения к этому рисунку.
Этот метод getItemsByLabel
public void getItemsByLabel(String label) {
String url = BloggerAPI.BASE_URL + "search?q=label:" + label + "&key=" + BloggerAPI.KEY;
Log.e("Label :",url);
if (token != "") {
url = url + "&pageToken=" + token;
}
if (token == null) {
return;
}
progress.setVisibility(View.VISIBLE);
final Call<PostList> postList = BloggerAPI.getService().getPostList(url);
postList.enqueue(new Callback<PostList>() {
@Override
public void onResponse(Call<PostList> call, Response<PostList> response) {
items.clear();
recyclerView.swapAdapter(adapter, false);
PostList list = response.body();
token = list.getNextPageToken();
items.addAll(list.getItems());
adapter = new PostAdapter(MainActivity.this,items);
adapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "Sucess", Toast.LENGTH_LONG).show();
progress.setVisibility(View.GONE);
}
@Override
public void onFailure(Call<PostList> call, Throwable t) {
Toast.makeText(MainActivity.this, "Error occured", Toast.LENGTH_LONG).show();
Log.i(TAG, "onFailure: " + t.toString());
}
});
}
Я использовал items.clear();
и recyclerView.swapAdapter(adapter, false);
для изменения элементов в списке с помощью элементовчто выбрано по метке и использовано здесь onNavigationItemSelected метод
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
switch (item.getItemId()) {
case R.id.home:
getData();
break;
case R.id.accessory:
getItemsByLabel("Accessory");
break;
case R.id.arcade:
getItemsByLabel("Arcade");
break;
case R.id.fashion:
getItemsByLabel("Fashion");
break;
case R.id.food:
getItemsByLabel("Food");
break;
case R.id.heath:
getItemsByLabel("Heath");
break;
case R.id.lifeStyle:
getItemsByLabel("Lifestyle");
break;
case R.id.sports:
getItemsByLabel("Sports");
break;
case R.id.settings:
break;
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}