Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
1

Searchview в toolbar

06.04.2016, 16:03. Показов 4833. Ответов 19

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане.
Нужна Ваша помощь в реализации поиска.
Есть несколько фрагментов, и searchview в toolbar-е как осуществить поиск для каждого фрагмента через этот 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.example.rustam.proektmenu.main_fragment;
 
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SearchView;
 
import com.example.rustam.proektmenu.R;
 
public class fragment_slovar extends Fragment {
String[]    spisok;
EditText inputserch;
SearchView sv;
private ListView lv;
ArrayAdapter<String> adapter;
 
@Nullable
@Override
 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootview= inflater.inflate(R.layout.fragment_slovar,container,false);
spisok=getResources().getStringArray(R.array.country_name);
lv=(ListView) rootview.findViewById(R.id.listView);
sv=(SearchView)rootview.findViewById(R.id.search555);
adapter=new ArrayAdapter<String>(getActivity(),R.layout.stilspiskaslovarya,spisok);
lv.setAdapter(adapter);
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
 
public boolean onQueryTextSubmit(String text) {
return false;
}
 
 @Override
 
public boolean onQueryTextChange(String text) {
adapter.getFilter().filter(text);
return false;
}
});
return rootview;
}
}
Добавлено через 1 час 21 минуту
эххх никто не хочет помогать((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2016, 16:03
Ответы с готовыми решениями:

Скрыть тулбар у 1 фрагмента Tabbed Activity + toolbar + Searchview
есть Tabbed Activity У неё тулбар в нем SearchView/ в Tabbed Activity 2 фрагмента. в 1 поиск не...

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

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

SearchView ругается на Listener?
Добрый день! подскажите что ему не нравится: @Override public boolean...

19
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.04.2016, 16:23 2
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

rusik1994, привет!
Ну, для начала надо бы привести код в порядок.
В принципе, каждый решает эту задачу самостоятельно, примеров масса на разные случаи жизни. Подводных камней - тоже. Писать простыню кода лень.
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
06.04.2016, 16:41  [ТС] 3
CoolMind, ну если я использую компонент Search в самом фрагменте то поиск работает, а как сделать так чтобы android.support.v7.widget.SearchView в толбаре использовать для поиска в разных fragmentax. как нужно настроить и что нужно прописывать в манефесте если не составит труда объясните новичку

Добавлено через 2 минуты
CoolMind,
делал поиск с помощью Edit все прекрасно работало а вот с этим виджетом никак не получается подружиться

Добавлено через 11 минут
CoolMind, А что в коде не так то)))?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.04.2016, 17:28 4
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

import android.app.Fragment;
заменить на
import android.support.v4.app.Fragment;

и ошибку надо скопировать из лога и сюда всю выложить
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
06.04.2016, 17:37  [ТС] 5
Паблито, щас попробую

Добавлено через 3 минуты
Паблито, если я заменяю как вы написали то ругается в главном активити
Java
1
2
3
4
5
Error:(114, 51) error: no suitable method found for replace(int,fragment_slovar)
method FragmentTransaction.replace(int,Fragment,String) is not applicable
(actual and formal argument lists differ in length)
method FragmentTransaction.replace(int,Fragment) is not applicable
(actual argument fragment_slovar cannot be converted to Fragment by method invocation conversion)
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.04.2016, 17:41 6
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

Цитата Сообщение от rusik1994 Посмотреть сообщение
SearchView в толбаре использовать для поиска в разных fragmentax
Насколько я помню, события набора текста в toolbar'е делаются в активности, там срабатывает слушатель (listener), который вызывает поиск (фильтрацию) в активном фрагменте. Т.е. вам нужно уметь передавать данные из активности в текущий фрагмент. Обычно это делается через listener'ы, но можно и некоторыми другими способами.

Добавлено через 2 минуты
Цитата Сообщение от rusik1994 Посмотреть сообщение
то ругается в главном активити
Если используете Fragment совместно с support-библиотекой, надо привести к "одному знаменателю" все связанные библиотеки и методы в разных классах. Например, FragmentManager тоже будет support-v4.
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
06.04.2016, 17:51  [ТС] 7
изменил все как вы написали теперь когда вызываю из меню переход на фрагмент где хочу сделать поиск то выводит следующее

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
04-06 17:50:07.396 1857-1953/com.example.rustam.proektmenu I/OpenGLRenderer: Initialized EGL, version 1.4
04-06 17:50:07.466 1857-1953/com.example.rustam.proektmenu D/OpenGLRenderer: Enabling debug mode 0
04-06 17:50:07.936 1857-1857/com.example.rustam.proektmenu I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@d9e30e3 time:3282865
04-06 17:50:08.636 1857-1857/com.example.rustam.proektmenu D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
04-06 17:50:10.306 1857-1857/com.example.rustam.proektmenu D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
04-06 17:50:10.496 1857-1857/com.example.rustam.proektmenu D/AndroidRuntime: Shutting down VM
04-06 17:50:10.496 1857-1857/com.example.rustam.proektmenu E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.example.rustam.proektmenu, PID: 1857
                                                                             java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)' on a null object reference
                                                                                 at com.example.rustam.proektmenu.main_fragment.fragment_slovar.onCreateView(fragment_slovar.java:45)
                                                                                 at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                                                 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                                 at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                                                 at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                                                                                 at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                                                 at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
                                                                                 at android.os.Handler.handleCallback(Handler.java:739)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:135)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5536)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1397)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1192)
04-06 17:50:13.396 1857-1857/com.example.rustam.proektmenu I/Process: Sending signal. PID: 1857 SIG: 9
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.04.2016, 17:54 8
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

rusik1994, в строке fragment_slovar.java:45 происходит вызов метода ну пустом объекте.
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
07.04.2016, 10:34  [ТС] 9
вот код фрагмента

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
package com.example.rustam.proektmenu.main_fragment;
 
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Toolbar;
 
import com.example.rustam.proektmenu.R;
 
public class fragment_slovar extends Fragment {
    String[]    spisok;
EditText inputserch;
    SearchView sv;
    private ListView lv;
    ArrayAdapter<String> adapter;
 
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
         View rootview= inflater.inflate(R.layout.fragment_slovar,container,false);
        spisok=getResources().getStringArray(R.array.country_name);
        lv=(ListView) rootview.findViewById(R.id.listView);
        sv=(SearchView)rootview.findViewById(R.id.search555);
        adapter=new ArrayAdapter<String>(getActivity(),R.layout.stilspiskaslovarya,spisok);
        lv.setAdapter(adapter);
 
        sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String text) {
                return false;
            }
 
            @Override
            public boolean onQueryTextChange(String text) {
                adapter.getFilter().filter(text);
 
                return false;
            }
        });
 
        return rootview;
    }
}
Добавлено через 5 минут
CoolMind,

ругается на вызов функции
Java
1
2
    
    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
Добавлено через 3 минуты
хотя если вместо searchview из тоолбара вызываю searchview который на самом фрагменте никаких ошибок нет и программа корректно работает и производит фильтрацию

Добавлено через 34 секунды
может в манифесте что то нужно прописать?

Добавлено через 4 минуты
это что получается что фильтрация вызывается сразу при попытке вызвать данный фрагмент?

Добавлено через 16 часов 25 минут
CoolMind, а как установить слушателя (Listener) для searchView в фрагменте?
а то как только не перепробовал никак не хочет

пробовал запускать фильтрацию после получения фокуса SearchView тоже безрезультатно(((
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
07.04.2016, 18:56 10
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

rusik1994, ну как, получилось?
Вы фильтрацию внутри адаптера прописали?
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
07.04.2016, 19:22  [ТС] 11
CoolMind, нет не получилось(((

наверху отправил весь код фрагмента может подскажете где ошибки у меня там

Добавлено через 7 минут
CoolMind,
вот весь код фрагмента
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
package com.example.rustam.proektmenu.main_fragment;
 
import android.app.SearchManager;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import com.example.rustam.proektmenu.R;
 
public class fragment_slovar extends Fragment {
 
    String[]    spisok;
    SearchView sv;
    private ListView lv;
    ArrayAdapter<String> adapter;
 
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View rootview= inflater.inflate(R.layout.fragment_slovar,container,false);
        spisok=getResources().getStringArray(R.array.country_name);
        lv=(ListView) rootview.findViewById(R.id.listView);
        adapter=new ArrayAdapter<String>(getActivity(),R.layout.stilspiskaslovarya,spisok);
        lv.setAdapter(adapter);
        sv=(SearchView)rootview.findViewById(R.id.search555);
 
        sv.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 rootview;
    }
}
Добавлено через 48 секунд
вот лог при попытке перейти на фрагмент где нужно произвести поиск



вот лог

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
04-07 19:13:30.662 11901-11901/? E/Zygote: v2
04-07 19:13:30.672 11901-11901/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
04-07 19:13:37.072 11901-12017/com.example.rustam.proektmenu E/OpenGLRenderer: SFEffectCache:clear(), mSize = 0
04-07 19:13:44.732 11901-11901/com.example.rustam.proektmenu E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.example.rustam.proektmenu, PID: 11901
                                                                               java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)' on a null object reference
                                                                                   at com.example.rustam.proektmenu.main_fragment.fragment_slovar.onCreateView(fragment_slovar.java:51)
                                                                                   at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                                                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                                   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                                                   at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                                                                                   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                                                   at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
                                                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:135)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5536)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1397)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1192)
Добавлено через 1 минуту
и вот сама разметка

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
 
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_gravity="center_horizontal|bottom"
        android:textAlignment="gravity"
        android:divider="#d47501"
        android:dividerHeight="3dp"
        />
 
    
</FrameLayout>
Добавлено через 4 минуты
и вот сам файл меню откуда собственно и хочу произвести фильтрацию

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
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never" />
 
    <item
        android:id="@+id/ngl"
        android:title="Главная"
        android:orderInCategory="1"
        app:showAsAction="never"
        />
    <item
        android:id="@+id/search555"
        android:title="Поиск"
        android:orderInCategory="2"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="ifRoom"
        android:iconifiedByDefault="false"
 
        />
 
</menu>
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.04.2016, 14:47 12
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

Java
1
sv=(SearchView)rootview.findViewById(R.id.search555);
так не ищется, это searchview считается пунктом меню, поэтому его надо искать в меню
пример как работать с ним, не совсем точный, но кто захочет - почитает и сделает выводы
Поиск в ListView с помощью SearchView
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
08.04.2016, 19:14  [ТС] 13
Паблито, уважаемый,Вы мне лучше подскажите как в фрагменте получить доступ к этому элементу. как установить для него слушатель. мне что нужно и в фрагменте вызывать onCreateOptionsMenu и уже там все это описывать?

Добавлено через 4 минуты
Паблито, сам фрагмент у меня наследуется так public class fragment_slovar extends Fragment
и все действия и прописываю внутри public View onCreateView вот таким образом

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
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View rootview= inflater.inflate(R.layout.fragment_slovar,container,false);
        spisok=getResources().getStringArray(R.array.country_name);
        lv=(ListView) rootview.findViewById(R.id.listView);
        adapter=new ArrayAdapter<String>(getActivity(),R.layout.stilspiskaslovarya,spisok);
        lv.setAdapter(adapter);
        sv=(SearchView)rootview.findViewById(R.id.search555);
 
        sv.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 rootview;
    }
Добавлено через 7 минут
Паблито, если я прописываю таким образом
Java
1
2
MenuItem ourSearchItem = menu.findItem(R.id.menu_item_search);
        SearchView searchView = (SearchView) ourSearchItem.getActionView();
то menu высвечивается красным. опять же прописываю все это внутри
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.04.2016, 19:20 14
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

у фрагмента свое меню инфлейтится или этот item_search в меню активити?
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
08.04.2016, 19:23  [ТС] 15
Паблито, это из активити все идет. внутри фрагмента только адаптер для вывода списка к нему и хочу прописать фильтрацию через этот searchview
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.04.2016, 19:30 16
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

лично я бы сделал так что бы у фрагмента было свое меню
тогда вообще никаких проблем вытянуть оттуда нужный пункт

в конструкторе фрагмента пишется setHasOptionsMenu(true);
и переопределяем метод
Java
1
2
3
4
5
6
@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.menu_frag1, menu);
    }
там и ищем нужный нам пункт и все остальное
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
08.04.2016, 19:39  [ТС] 17
Паблито, а на отображение тех элементов которые уже объявлены в основном файле не повлияет такой подход?

Добавлено через 5 минут
Паблито,

это все прописывать внутри
Java
1
2
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.04.2016, 19:46 18
Лучший ответ Сообщение было отмечено rusik1994 как решение

Решение

Цитата Сообщение от Паблито Посмотреть сообщение
в конструкторе фрагмента пишется setHasOptionsMenu(true);
Цитата Сообщение от Паблито Посмотреть сообщение
menu.clear();
стирает все пункты меню, которые были в активити, если стирать не нужно то и строка эта не нужна
при закрытии фрагмента меню акивити должно вернуться в исходное состояние...по идее, проверить что мешает?
1
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
08.04.2016, 21:06  [ТС] 19
Паблито, сейчас попробую)))

Добавлено через 8 минут
Паблито, ну добавить элемент получилось а как теперь обращаться к нему из

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);

Добавлено через 1 час 5 минут
Паблито,
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
в итоге так написал, но ничего не фильтруется(((
 
package com.example.rustam.proektmenu.main_fragment;
 
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import com.example.rustam.proektmenu.R;
 
public class fragment_slovar extends Fragment {
    String[]    spisok;
    SearchView sv;
    private ListView lv;
    ArrayAdapter<String> adapter;
 
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View rootview= inflater.inflate(R.layout.fragment_slovar,container,false);
        spisok=getResources().getStringArray(R.array.country_name);
        lv=(ListView) rootview.findViewById(R.id.listView);
        adapter=new ArrayAdapter<String>(getActivity(),R.layout.stilspiskaslovarya,spisok);
        lv.setAdapter(adapter);
        sv=(SearchView) rootview.findViewById(R.id.svSlov);
        return rootview;
 
    }
 
 
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.slovmenu, menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        switch (id) {
            case R.id.svSlov:
                sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                    @Override
                    public boolean onQueryTextSubmit(String query) {
                        return false;
                    }
 
                    @Override
                    public boolean onQueryTextChange(String newText) {
                        adapter.getFilter().filter(newText);
                        return false;
                    }
                });
                break;
        }
 
        return super.onOptionsItemSelected(item);
    }
}
0
25 / 25 / 9
Регистрация: 16.07.2012
Сообщений: 304
Записей в блоге: 1
11.04.2016, 20:47  [ТС] 20
так и не объяснил никто как решить проблему мою(((
0
11.04.2016, 20:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2016, 20:47
Помогаю со студенческими работами здесь

Поиск в ListView с помощью SearchView
Прикручиваю SearchView, чтобы фильтровать ListView: MenuItem ourSearchItem =...

Отследить закрытие SearchView Android
Подскажите пожалуйста, как отследить закрытие SearchView, производится нажатием на стрелку.Но...

Спрятать SearchView в некоторых фрагментах
Всем привет, такой вопрос: Есть NavigationDrawer В одном фрагменте реализован viewPager , там 2...

Передать SearchView из активити во фрагмент
У меня есть SearchView в активити и тесть фрагмент который запускается через транзакцию. И как мне...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru