Реализовать поиск по списку

376
28 ноября 2017, 22:16

Доброго времени суток! Помогите пожалуйста реализовать поиск по списку. Две недели мучаюсь!

public class TabFragmentOne extends Fragment {
    private static final String ARGS_EXAMPLE = "";
    private String example_data;
    final String ATRIBUTE_NAME_IMAGE = "image";
    final String ATRIBUTE_NAME_TEXT = "text";
    private ListView listView;
    private String[] names = {
            "А",
            "Б",
            "В",
            "Г",
            "Д"};
    private int[] images = {
            R.mipmap.a,
            R.mipmap.b,
            R.mipmap.c,
            R.mipmap.d,
            R.mipmap.e};
    public TabFragmentOne() {
    }
    private SearchView searchView;
    SimpleAdapter simpleAdapter;
    public static TabFragmentOne newInstance(String example_argument) {
        TabFragmentOne tabFragmentOne = new TabFragmentOne();
        Bundle args = new Bundle();
        args.putString(ARGS_EXAMPLE, example_argument);
        tabFragmentOne.setArguments(args);
        return tabFragmentOne;
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        example_data = getArguments().getString(ARGS_EXAMPLE);
        Log.i("Fragment create with", example_data);
    }
    @Nullable
    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.fragment_one, container, false);
        listView = (ListView) view.findViewById(R.id.listView);
        searchView = (SearchView)view.findViewById(R.id.searchView);
        ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>(magas.length);
        Map<String, Object> map;
        String[] from = {ATRIBUTE_NAME_TEXT, ATRIBUTE_NAME_IMAGE};
        int[] to = {R.id.tvMainLv, R.id.imgMainLv};
        simpleAdapter = new SimpleAdapter(getContext(), data, R.layout.listview_main_for_tab, from, to);
        for (int i = 0; i < magas.length; i++) {
            map = new HashMap<String, Object>();
            map.put(ATRIBUTE_NAME_TEXT, magas[i]);
            map.put(ATRIBUTE_NAME_IMAGE, images[i]);
            data.add(map);
        }
        listView.setAdapter(simpleAdapter);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }
            @Override
            public boolean onQueryTextChange(String newText) {
                simpleAdapter.getFilter().filter(newText);
                return false;
            }
        });
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                switch (i) {
                    case 0:
                        Toast.makeText(getContext(), "А", Toast.LENGTH_SHORT).show();
                        break;
                    case 1:
                        Toast.makeText(getContext(), "Б", Toast.LENGTH_SHORT).show();
                        break;
                    case 2:
                        Toast.makeText(getContext(), "В", Toast.LENGTH_SHORT).show();
                        break;
                    case 3:
                        Toast.makeText(getContext(), "Г", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
        return view;
    }

}
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime: FATAL EXCEPTION: main
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime: java.lang.NullPointerException
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.SimpleAdapter.getCount(SimpleAdapter.java:93)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.AdapterView.checkFocus(AdapterView.java:712)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.AdapterView$AdapterDataSetObserver.onInvalidated(AdapterView.java:835)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.AbsListView$AdapterDataSetObserver.onInvalidated(AbsListView.java:5966)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.database.DataSetObservable.notifyInvalidated(DataSetObservable.java:50)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.BaseAdapter.notifyDataSetInvalidated(BaseAdapter.java:59)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.SimpleAdapter$SimpleFilter.publishResults(SimpleAdapter.java:383)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:282)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5041)
11-27 11:37:00.935 3546-3546/? E/AndroidRuntime:     at
Answer 1

У Вас поле count не инициализируется, поэтому вылетает NPE при попытке его получить. Довольно распространённая ошибка при использовании getter-ов.

В SimpleAdapter есть счётчик, который считает, сколько элементов Вы передали в data в конструктор SimpleAdapter. Вы передали пустой List, стало быть, data.size() = 0, и count должен быть 0, но он почему-то null, отсюда NPE.

Я java-разработчик, в студию залезть сейчас не могу, но Вы можете начинать копать в эту сторону, подебажить, а также, попытаться наполнить чем-то data.

READ ALSO
Конвертирование между форматами. Java

Конвертирование между форматами. Java

Хочу научится конвертировать mp4 в mp3 и тому подобное на JavaПодскажите в какую сторону начинать копать

338
Подключение org.apache.commons.net.ftp.FTP к проекту

Подключение org.apache.commons.net.ftp.FTP к проекту

В Java совсем новичок, но есть задача переписать ftp-клиент с C# на JavaПодскажите пожалуйста (желательно по пунктам), как подключить данную библиотеку?...

272
Как интегрировать Angular 4 и Spring Boot через Maven

Как интегрировать Angular 4 и Spring Boot через Maven

Подскажите пожалуйста, есть модульная структура проектаНужно подключить ангуляр 4й, чтобы при запуску приложения, стартовал ангуляр, БЕЗ...

364
Response от download manager

Response от download manager

Нужно выполнять определенные действия с файлом, но только после того, как его скачивание завершитсяФайл скачиваю через DownloadManager

273