Представление меняется один раз при вызове метода onNavigationItemSelected - PullRequest
0 голосов
/ 03 февраля 2019

В этой части приложения я получал данные с сервера, используя Blogger API и модернизацию, я использовал метод onNavigationItemSelected, когда конкретный элемент щелкнул по методу getItemsByLabel, вызвавшему, какой метод модернизации onResponse будет вызывать, и получая данные для выбранной категории.проблема заключается в том, что он работает в первый раз, когда я нажимаю на элемент, и после этого вид не меняется, чтобы получить дополнительные пояснения к этому рисунку.

image

Этот метод 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;
    }
...