android - 调用 onNavigationItemSelected 方法时视图正在更改一次
问题描述
在应用程序的这一部分中,我使用 Blogger API 和改造从服务器获取数据,我onNavigationItemSelected
在特定项目单击时使用方法getItemsByLabel
调用哪个改造onResponse
方法将调用并获取所选类别的数据,问题是它在我第一次单击时工作在项目和视图之后没有改变,为了进一步澄清看这个gif
这个 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;
}
解决方案
推荐阅读
- amazon-web-services - 错误:撰写文件“./docker-compose.yml”无效,因为:services.jenkins.networks 包含无效类型
- api-platform.com - 使用 GraphQL 在 ApiPlatform 上使用自定义解析器/数据提供程序返回集合
- vue.js - 使用 iframe 进行 Vuetify 对话框
- r - 用 lapply 替换多个数据帧中的字符串
- r - R c() "combine-function",不通过第一个输入设置类
- .net - 当另一个用户给你写信时,如何在 React 聊天应用程序中实时更新未读消息计数器
- reactjs - 意外的令牌,应为“;” 在本机反应
- python - Python - 设置数组
- flutter - 在 VS Code 中更改 Flutter 热重载时间
- javascript - 如何让 for 循环检查第一行