Как перейти к нужным деталям фрагмента, нажав на элемент в ListView внутри фрагмента после фильтрации с помощью SearchView? - PullRequest
1 голос
/ 07 июля 2019

Я разрабатываю приложение, в котором у меня есть список покемонов, ListView находится внутри фрагмента, когда я нажимаю на покемона, приложение переходит к другому действию, которое содержит фрагменты с деталями покемонов, все до этого момента работает хорошо , У меня есть меню, которое включает в себя SearchView, поиск работает нормально, но проблема возникает, когда я нажимаю на покемона, приложение отображает сведения о покемоне, который находится в этом месте в ListView, вместо того, чтобы показывать информацию о правом покемоне, на которого я нажал.

(пока не могу выложить изображения)

Перед поиском у меня есть:

Мой список:

Бульбасавр (идентификатор в ListView = 0)

Ивисавр (идентификатор в ListView = 1)

Венусавр (идентификатор в ListView = 2)

Charmander (идентификатор в ListView = 3)

Charmeleon (идентификатор в ListView = 4)

и т.д ...

Затем я нажимаю на Ivysaur и получаю детали Ivysaur

Когда я выполняю поиск, я получаю это:

Я ищу покемона, содержащего "b", и мой список превращается в нечто подобное:

Бульбасавр (идентификатор в ListView = 0)

Бластуаз (идентификатор в ListView = 1)

Без масла (идентификатор в ListView = 2)

Beedrill (идентификатор в ListView = 3)

и т.д ...

Я нажимаю на Blastoise (с ID = 1), и я получаю детали Ivysaur Я думаю, это потому, что в первоначальном списке Ivysaur имел ID = 1.

BindFragmentsPokedexActivity.java

public class BindFragmentsPokedexActivity extends AppCompatActivity
        implements PokedexFragment.OnFragmentInteractionListener
        , PokedexSettingsDialogFragment.OnPokemonTypeFilterListener {

    @BindView(R.id.toolbarPokedex)
    Toolbar toolbar;

    private ListView pkmListView;
    private List<Pokemon> pkmList;
    private PokedexAdapter adapter;

    public static int filterFlag;

    @Override
    protected void onCreate(Bundle savedInstanceState) { /*m./*m.onCreate*/
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bind_fragments_pokedex);

        ButterKnife.bind(this);

        toolbar();

    } /*m.onCreate*/

    @Override
    public void onPokemonClick(Pokemon pkm) { /*m.onPokemonClick*/

        setPokedexDataExtras(pkm);

    } /*m.onPokemonClick*/

    private void setPokedexDataExtras(Pokemon pkm) { /*m.setPokedexDataExtras*/

        Intent intent = new Intent(this, PokemonDetailsActivity.class);
        intent.putExtra("NormalPkmPic", pkm.getPokemonPicResId());
        intent.putExtra("ShinyPkmPic", pkm.getPokemonShinyPicResId());
        intent.putExtra("PkmName", pkm.getPokemonName());
        intent.putExtra("PkmDexNum", pkm.getPokemonDexNum());
        intent.putExtra("PkmType1", pkm.getPokemonType1());
        intent.putExtra("PkmType2", pkm.getPokemonType2());
        intent.putExtra("DexNum", pkm.getDexNum());
        intent.putExtra("isMega", pkm.isMega());
        intent.putExtra("isAlolan", pkm.isAlolan());
        intent.putExtra("PkmType1Search", pkm.getPokemonType1Search());
        intent.putExtra("PkmType2Search", pkm.getPokemonType2Search());
        startActivity(intent);
    } /*m.setPokedexDataExtras*/

    @Override
    public boolean onCreateOptionsMenu(Menu menu) { /*m.onCreateOptionsMenu*/
        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.menu.pokedex_menu, menu);

        pkmListView = findViewById(R.id.listViewPokedex);

        pkmList = PokemonDataSource.getPokemonList();

        adapter = new PokedexAdapter(BindFragmentsPokedexActivity.this, R.layout.list_view_pokemon
                , pkmList);

        pkmListView.setAdapter(adapter);

        filterFlag = 0;

        MenuItem searchItem = menu.findItem(R.id.pokedex_search);

        SearchView searchView = (SearchView) searchItem.getActionView();
        searchView.setQueryHint(getResources().getString(R.string.search_menu));

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {

                adapter.getFilter().filter(newText);
                return true;
            }
        });

        return true;
    } /*m.onCreateOptionsMenu*/

    @Override
    public boolean onOptionsItemSelected(MenuItem item) { /*m.onOptionsItemSelected*/

        switch(item.getItemId()) { /*1.*/
            case R.id.pokedex_type: {
                break;
            } /*case R.id.pokedex_type*/
            case R.id.pokedex_settings: {
                new PokedexSettingsDialogFragment().show(getSupportFragmentManager()
                        , "PokedexSettingsDialogFragment");
                break;
            } /*case R.id.pokedex_settings*/
        } /*1.*/

        return super.onOptionsItemSelected(item);
    } /*m.onOptionsItemSelected*/


    @Override
    public void onTypeFilter(TextView pkmType) {

        pkmType.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) { /*m.beforeTextChanged*/

            } /*m.beforeTextChanged*/

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) { /*m.onTextChanged*/

                filterFlag = 1;
                adapter.getFilter().filter(s);
            } /*m.onTextChanged*/

            @Override
            public void afterTextChanged(Editable s) { /*m.afterTextChanged*/

            } /*m.afterTextChanged*/
        });

    } /*m.onTypeFilter*/


} //BindFragmentsPokedexActivity

PokedexFragment.java

public class PokedexFragment extends Fragment {

    private Unbinder unbinder;

    @BindView(R.id.listViewPokedex)
    ListView pkmListView;
    private PokedexAdapter pokedexAdapter;

    private List<Pokemon> pkmList;

    OnFragmentInteractionListener pkmListener;

    public PokedexFragment() { /*c.PokedexFragment*/
        // Required empty public constructor
    } /*c.PokedexFragment*/


    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /*m.onCreateView*/

        View view = inflater.inflate(R.layout.fragment_pokedex, container, false);

        unbinder = ButterKnife.bind(this, view);

        pkmList = PokemonDataSource.getPokemonList();
        pokedexAdapter = new PokedexAdapter(getContext(), R.layout.list_view_pokemon, pkmList);

        pkmListView.setAdapter(pokedexAdapter);

        pkmListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /*m.OnItemClickListener*/
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) { /*m.onItemClick*/
                pkmListener.onPokemonClick(pkmList.get(position));
            } /*m.onItemClick*/
        }); /*m.OnItemClickListener*/

        return view;
    } /*m.onCreateView*/

    @Override
    public void onAttach(Context context) { /*m.onAttach*/
        super.onAttach(context);

        if (context instanceof OnFragmentInteractionListener) {
            pkmListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener");
        }
    } /*m.onAttach*/

    @Override
    public void onDetach() { /*m.onDetach*/
        super.onDetach();
        pkmListener = null;
    } /*m.onDetach*/

    @Override
    public void onDestroyView() { /*m.onDestroyView*/
        super.onDestroyView();
        unbinder.unbind();
    } /*m.onDestroyView*/

    public interface OnFragmentInteractionListener { /*i.OnFragmentInteractionListener*/
        void onPokemonClick(Pokemon pkm);
    } /*i.OnFragmentInteractionListener*/


} //PokedexFragment

PokedexAdapter.java

public class PokedexAdapter extends BaseAdapter implements Filterable {

    private Context context;
    private int layout;
    private List<Pokemon> pkmList;
    private List<Pokemon> filterList; 

    private CustomFilter filter;

    public PokedexAdapter(Context context, int layout, List<Pokemon> pkmList) { /*c.FilmsAdapter*/
        this.context = context;
        this.layout = layout;
        this.pkmList = pkmList;
        this.filterList = pkmList;
    } /*c.FilmsAdapter*/

    @Override
    public int getCount() { /*m.getCount*/
        return pkmList.size();
    } /*m.getCount*/

    @Override
    public Pokemon getItem(int position) { /*m.getItem*/
        return pkmList.get(position);
    } /*m.getItem*/

    @Override
    public long getItemId(int position) { /*m.getItemId*/
        return position;
    } /*m.getItemId*/

    @Override
    public View getView(int position, View convertView, ViewGroup parent) { /*m.getView*/

        ViewHolder viewHolder;

        if(convertView == null) { /*1.*/

            convertView = LayoutInflater.from(context).inflate(layout, null);
            viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        } /*1.*/
        else { /*1.*/
            viewHolder = (ViewHolder) convertView.getTag();
        } /*1.*/

        Pokemon currentPokemon = getItem(position);

        Picasso.get().load(currentPokemon.getPokemonPicResId()).fit().into(viewHolder.ivPkmPic);
        viewHolder.tvPkmName.setText(currentPokemon.getPokemonName());
        viewHolder.tvPkmDexNum.setText(currentPokemon.getPokemonDexNum());
        SetPokemonTypes.setTextViewType1(currentPokemon, viewHolder.tvPkmType1);
        SetPokemonTypes.setTextViewType2(currentPokemon, viewHolder.tvPkmType1, viewHolder.tvPkmType2);

        return convertView;
    } /*m.getView*/

    static class ViewHolder {

        @BindView(R.id.pokemonPicture)
        ImageView ivPkmPic;
        @BindView(R.id.pokemonName)
        TextView tvPkmName;
        @BindView(R.id.pokemonDexNum)
        TextView tvPkmDexNum;
        @BindView(R.id.type1)
        TextView tvPkmType1;
        @BindView(R.id.type2)
        TextView tvPkmType2;

        ViewHolder(View convertView) { /*c.ViewHolder*/
            ButterKnife.bind(this, convertView);
        } /*c.ViewHolder*/

    } //ViewHolder

    @Override
    public Filter getFilter() { /*m.getFilter*/

        if(filter == null) { /*1.*/

            filter = new CustomFilter();
        } /*1.*/

        return filter;
    } /*m.getFilter*/

    class CustomFilter extends Filter {

        @Override
        protected FilterResults performFiltering(CharSequence constraint) { /*m.performFiltering*/

            FilterResults results = new FilterResults();

            //If there's nothing to filter on, return the original data for your list
            if(constraint != null && constraint.length() > 0) { /*1.*/

                //Constraint to upper
                constraint = constraint.toString().toUpperCase();

                List<Pokemon> filters = new ArrayList<>();

                for(int i = 0; i < filterList.size(); i++) { /*1.1*/

                    if(filterList.get(i).getPokemonName().toUpperCase().contains(constraint)
                            && BindFragmentsPokedexActivity.filterFlag == 0) { /*1.1.1*/

                        Pokemon pkm = new Pokemon(filterList.get(i).getPokemonPicResId()
                                , filterList.get(i).getPokemonShinyPicResId(), filterList.get(i).getPokemonName()
                                , filterList.get(i).getPokemonDexNum(), filterList.get(i).getPokemonType1()
                                , filterList.get(i).getPokemonType2(), filterList.get(i).getDexNum()
                                , filterList.get(i).isMega(), filterList.get(i).isAlolan()
                                , filterList.get(i).getPokemonType1Search()
                                , filterList.get(i).getPokemonType2Search());

                        filters.add(pkm);
                    } /*1.1.1*/
                    //filter per type
                    else { /*1.1.1*/
                        if(filterList.get(i).getPokemonType2Search() != null) { /*1.1.1.1*/

                            if(filterList.get(i).getPokemonType1Search().toUpperCase().contains(constraint)
                                    || filterList.get(i).getPokemonType2Search().toUpperCase().contains(constraint)
                                    && BindFragmentsPokedexActivity.filterFlag == 1) { /*1.1.1.1.1*/

                                Pokemon pkm = new Pokemon(filterList.get(i).getPokemonPicResId()
                                        , filterList.get(i).getPokemonShinyPicResId(), filterList.get(i).getPokemonName()
                                        , filterList.get(i).getPokemonDexNum(), filterList.get(i).getPokemonType1()
                                        , filterList.get(i).getPokemonType2(), filterList.get(i).getDexNum()
                                        , filterList.get(i).isMega(), filterList.get(i).isAlolan()
                                        , filterList.get(i).getPokemonType1Search()
                                        , filterList.get(i).getPokemonType2Search());

                                filters.add(pkm);
                            } /*1.1.1.1.1*/
                        } /*1.1.1.1*/
                        else { /*1.1.1.1*/
                            if(filterList.get(i).getPokemonType1Search().toUpperCase().contains(constraint)
                                    && BindFragmentsPokedexActivity.filterFlag == 1) { /*1.1.1.1.1*/

                                Pokemon pkm = new Pokemon(filterList.get(i).getPokemonPicResId()
                                        , filterList.get(i).getPokemonShinyPicResId(), filterList.get(i).getPokemonName()
                                        , filterList.get(i).getPokemonDexNum(), filterList.get(i).getPokemonType1()
                                        , filterList.get(i).getPokemonType2(), filterList.get(i).getDexNum()
                                        , filterList.get(i).isMega(), filterList.get(i).isAlolan()
                                        , filterList.get(i).getPokemonType1Search()
                                        , filterList.get(i).getPokemonType2Search());

                                filters.add(pkm);
                            } /*1.1.1.1.1*/
                        } /*1.1.1.1*/
                    } /*1.1.1*/
                } /*1.1*/

                results.count = filters.size();
                results.values = filters;
            } /*1.*/
            else { /*1.*/

                results.count = filterList.size();
                results.values = filterList;
            } /*1.*/

            return results;
        } /*m.performFiltering*/

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) { /*m.publishResults*/

            pkmList = (List<Pokemon>) results.values;
            notifyDataSetChanged();
        } /*m.publishResults*/

    } //customFilter


} //PokedexAdapter

PokemonDetailsActivity.java

public class PokemonDetailsActivity extends AppCompatActivity {

    private int normalPkmPic;
    private int shinyPkmPic;
    private String pkmName;
    private String pkmDexNum;
    private int pkmType1;
    private int pkmType2;
    private boolean isMega;
    private boolean isAlolan;
    private int dexNum;
    private String pokemonType1Search;
    private String pokemonType2Search;

    @BindView(R.id.detailsToolbar)
    Toolbar toolbar;

    @BindView(R.id.buttonLearnset)
    Button buttonLearnset;

    @Override
    protected void onCreate(Bundle savedInstanceState) { /*m.onCreate*/
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pokemon_details);

        ButterKnife.bind(this);
        toolbar();

        if(getIntent().getExtras() != null) { /*1.*/
            getPkmPokedexDataExtras();
        } /*1.*/

        getFragments();
    } /*m.onCreate*/

    private void getPkmPokedexDataExtras() { /*m.getPkmPokedexDataExtras*/

        normalPkmPic = getIntent().getIntExtra("NormalPkmPic", -1);
        shinyPkmPic = getIntent().getIntExtra("ShinyPkmPic", -1);
        pkmName = getIntent().getStringExtra("PkmName");
        pkmDexNum = getIntent().getStringExtra("PkmDexNum");
        pkmType1 = getIntent().getIntExtra("PkmType1", -1);
        pkmType2 = getIntent().getIntExtra("PkmType2", -1);
        isMega = getIntent().getBooleanExtra("isMega", true);
        isAlolan = getIntent().getBooleanExtra("isAlolan", true);
        dexNum = getIntent().getIntExtra("DexNum", -1);
        pokemonType1Search = getIntent().getStringExtra("PkmType1Search");
        pokemonType2Search = getIntent().getStringExtra("PkmType2Search");
    } /*m.getPkmPokedexDataExtras*/

    private void getFragments() { /*m.getFragments*/

        Pokemon pokemon = new Pokemon(normalPkmPic, shinyPkmPic, pkmName, pkmDexNum, pkmType1, pkmType2
                , dexNum, isMega, isAlolan, pokemonType1Search, pokemonType2Search);

        MegaPokemon megaPokemon = new MegaPokemon(normalPkmPic, shinyPkmPic, pkmName, pkmDexNum, pkmType1
                , pkmType2, dexNum, isMega, isAlolan, pokemonType1Search, pokemonType2Search);

        AlolaFormPokemon alolaFormPokemon = new AlolaFormPokemon(normalPkmPic, shinyPkmPic, pkmName
                , pkmDexNum, pkmType1, pkmType2, dexNum, isMega, isAlolan, pokemonType1Search
                , pokemonType2Search);

        PokemonDetailsFragment pkmDetailsFragment = (PokemonDetailsFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonDetailsFragmentLayout);
        if(!isMega && !isAlolan) { /*pokemon*/
            pkmDetailsFragment.renderPokemonData(pokemon);
        } /*pokemon*/
        else { /*pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmDetailsFragment.renderMegaPokemonData(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmDetailsFragment.renderAlolaFormPokemonData(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*pokemon*/

        FeaturesFragment pkmFeaturesFragment = (FeaturesFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonFeaturesFragmentLayout);
        if(!isMega && !isAlolan) { /*pokemon*/
            pkmFeaturesFragment.renderPokemonFeatures(pokemon);
        } /*pokemon*/
        else { /*pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmFeaturesFragment.renderMegaPokemonFeatures(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmFeaturesFragment.renderAlolaFormPokemonFeatures(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*pokemon*/

        StatsFragment pkmStatsFragment = (StatsFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonBaseStatsFragmentLayout);
        if(!isMega && !isAlolan) { /*pokemon*/
            pkmStatsFragment.renderPokemonStats(pokemon);
        } /*pokemon*/
        else { /*pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmStatsFragment.renderMegaPokemonStats(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmStatsFragment.renderAlolaFormPokemonStats(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*pokemon*/

        WeaknessFragment pkmWeaknessFragment = (WeaknessFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonDamageTakenFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmWeaknessFragment.renderPokemonWeakness(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmWeaknessFragment.renderMegaPokemonWeakness(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmWeaknessFragment.renderAlolaFormPokemonWeakness(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        BreedingFragment pkmBreedingFragment = (BreedingFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonBreedingFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmBreedingFragment.renderPokemonBreeding(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmBreedingFragment.renderMegaPokemonBreeding(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmBreedingFragment.renderAlolaFormPokemonBreeding(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        TrainingFragment pkmTrainingFragment = (TrainingFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonTrainingFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmTrainingFragment.renderPokemonTraining(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmTrainingFragment.renderMegaPokemonTraining(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmTrainingFragment.renderAlolaFormPokemonTraining(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        EvolutionaryChainFragment pkmEvolutionaryChainFragment = (EvolutionaryChainFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonEvolutionaryChainFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmEvolutionaryChainFragment.renderPokemonEvolutionaryChain(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmEvolutionaryChainFragment.renderMegaPokemonEvolutionaryChain(megaPokemon, pokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmEvolutionaryChainFragment.renderAlolaFormPokemonEvolutionaryChain(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        MegaEvolutionFragment pkmMegaEvolutionFragment = (MegaEvolutionFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonMegaEvolutionFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmMegaEvolutionFragment.renderPokemonMegaEvolution(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmMegaEvolutionFragment.renderMegaPokemonMegaEvolution(megaPokemon);
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmMegaEvolutionFragment.renderAlolaFormPokemonMegaEvolution();
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        AlolaFormFragment pkmAlolaFormFragment = (AlolaFormFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonAlolaFormFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmAlolaFormFragment.renderPokemonAlolaForm(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmAlolaFormFragment.renderMegaPokemonAlolaForm();
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmAlolaFormFragment.renderMegaPokemonAlolaForm();
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        FormsFragment pkmFormsFragment = (FormsFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonFormsFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmFormsFragment.renderPokemonForms(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if(isMega && !isAlolan) { /*megas*/
                pkmFormsFragment.renderMegaPokemonForms();
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmFormsFragment.renderAlolaFormPokemonForms();
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/

        LocationFragment pkmLocationFragment = (LocationFragment) getSupportFragmentManager()
                .findFragmentById(R.id.pokemonLocationFragmentLayout);
        if(!isMega && !isAlolan) { /*Pokemon*/
            pkmLocationFragment.renderPokemonLocation(pokemon);
        } /*Pokemon*/
        else { /*Pokemon*/
            if (isMega && !isAlolan) { /*megas*/
                pkmLocationFragment.renderMegaPokemonLocation();
            } /*megas*/
            else { /*megas*/
                if(!isMega) { /*alola form*/
                    pkmLocationFragment.renderAlolaFormPokemonLocation(alolaFormPokemon);
                } /*alola form*/
            } /*megas*/
        } /*Pokemon*/
    } /*m.getFragments*/

    private void toolbar() {

        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        getSupportActionBar().setTitle(R.string.toolbar_title_pkm_details);
    } /*m.toolbar*/


} //PokemonDetailsActivity

Как получить правильный PokemonDetails при фильтрации списка?

...