Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Mail-up
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
1

Спрятать SearchView в некоторых фрагментах

23.04.2017, 08:20. Просмотров 251. Ответов 1
Метки нет (Все метки)

Всем привет, такой вопрос:
Есть NavigationDrawer
В одном фрагменте реализован viewPager , там 2 фрагмента и в каждом searchView в тулбаре.
Но когда заходишь в этот фрагмент, searchView потом отображдается во всех фрагментах приложения.
Как сделать что бы отображалась только в одном в том котором надо?


Вот фрагмент:

Со вкладками:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Fragment_bus_0 extends Fragment {
    private PagerAdapter1 mAdapter;
    private ViewPager mPager;
 
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
 
        View view = inflater.inflate(R.layout.fragment_bus_0, container, false);
 
        return view;
    }
 
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mAdapter = new PagerAdapter1(getChildFragmentManager());
        mPager = (ViewPager) getView().findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
        TabLayout tabLayout = (TabLayout)getView().findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mPager);
    }
 
 
 
    @Override
    public void onDetach() {
        super.onDetach();
 
    }
 
}

Ну и вот одна из вкадок - они одинаковые разный список только


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
public class Tab_1_frag extends Fragment implements SearchView.OnQueryTextListener{
 
    RecyclerView rv_bus;
    private Bus1Adapter adapter;
    private  List<ListStation> listStationList = new ArrayList<>();
    ActionBar toolbar;
    SearchView searchView;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        createStationlList();
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab_1, container, false);
        toolbar = ((AppCompatActivity) getActivity()).getSupportActionBar();
        rv_bus = (RecyclerView) view.findViewById(R.id.rv_recycle_tab);
 
        rv_bus.setLayoutManager(new LinearLayoutManager(getContext()));
        getActivity().getSupportFragmentManager().popBackStack();
        adapter = new Bus1Adapter(listStationList, R.layout.my_list_bus_main);
        rv_bus.setAdapter(adapter);
        rv_bus.setHasFixedSize(true);
 
    return view;
    }
 
 
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.menu_items, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(this );
        searchView.setQueryHint("Поиск");
        searchView.requestFocus();
 
 
        //анимация поиска
        View searchBar = searchView.findViewById(R.id.search_bar);
        if (searchBar != null && searchBar instanceof LinearLayout) {
            ((LinearLayout) searchBar).setLayoutTransition(new LayoutTransition());
        }
 
    }
 
    private void createStationlList() {
        //создаем список
        // ...
        //
    }
 
 
 
    @Override
    public boolean onQueryTextSubmit(String query) {
        return false;
    }
 
    private List<ListStation>
    filter(List<ListStation> models, String query) {
 
        query = query.toLowerCase();
        // models.clear();
        final List<ListStation> filteredModelList = new ArrayList<>();
 
        //if (query.length()==0){
        //     models.addAll(filteredModelList);
        //   }else
        for (ListStation model : models)     {
 
            final String text = model.getName().toLowerCase();
            final String text2 = model.getDetails().toLowerCase();
 
            if (text.contains(query)) {
                filteredModelList.add(model);
            }else
                //второй текст
            if (text2.contains(query)) {
                filteredModelList.add(model);
            }else ;
        }
        return filteredModelList;
    }
 
    @Override
    public boolean onQueryTextChange(String newText) {
        final List<ListStation> filteredModelList
                = filter(listStationList, newText);
        adapter.setFilter(filteredModelList);
        return false;
    }
 
   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2017, 08:20
Ответы с готовыми решениями:

Как добавить динамически в ToolBar виджет SearchView в нужных фрагментах
У меня есть Toolbar в MainActivity и нужно получить доступ к этому ToolBar во...

NavigationView на фрагментах
Всем привет! Нужен совет. Задача банальная. Приложение с NavigationView +...

View во фрагментах
Чтобы прикрепить вид к layout в onCreateView мы раздуваем вид таким образом:...

Запутался в фрагментах и транзакциях с GoogleMaps?
есть активити, в которой по кнопке меняются фрагменты (их пока всего два), один...

Можно ли рисовать лупу не во всех фрагментах?
Недавно подключил ActionBar с поиском, использовал такой тьюториал:...

1
Mail-up
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
25.04.2017, 12:02  [ТС] 2
решил проблемс таким образом : во всех фрагментах прописал в onCreate setHasOptionsMenu(true);
и там где поиск не нужен прописал

Java
1
2
3
4
 @Override
    public void onPrepareOptionsMenu(Menu menu) {
        MenuItem item=menu.findItem(R.id.action_search);
        item.setVisible(false);}
Не знаю насколько это правильно но работает без проблем. Может кому пригодится
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2017, 12:02

Что использовать во фрагментах вместо getIntent() ?
Всем привет! Пытаюсь из одной активности во фрагмент передать данные. Метод...

SearchView в ActionBar
Всем привет! Добавил в ActionBar фрагмента SearchView, но он не появляется,...

Searchview в toolbar
Доброго времени суток уважаемые форумчане. Нужна Ваша помощь в реализации...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru