Поиск первого символа строки для извлечения элементов из массива

#java #arrays #string #spinner

#java #массивы #строка #счетчик

Вопрос:

У меня есть приложение, над которым я работаю в Android Studio. У меня есть массив со списком из 50 состояний.

Пользователь может ввести одну букву текста, а затем должен нажать «поиск». Как только они нажимают поиск, он должен отображать все состояния, начинающиеся с буквы. Например, если они будут искать «k», они должны увидеть Канзас и Кентукки. Эти результаты должны быть представлены в виде счетчика.

Я знаю, что мне нужно использовать

имя_строки.charAt(0);

где-то в моем коде, но я не совсем уверен, где или что еще нужно добавить к этому.

В настоящее время, когда я запускаю свое приложение, независимо от того, какую букву я ищу, приложение отображает «Alabama» в окне поиска, а затем, когда вы щелкаете раскрывающийся список для окна поиска, оно просто показывает все состояния.

Буду признателен за любую помощь, поскольку я довольно новичок в Java, а также в StackOverflow, поэтому я надеюсь, что я представил свой вопрос четко и уместно. Спасибо всем, кто может помочь.

Вот часть моего Java-кода.

     public void buttonOnClick(View v) {
        Button button = (Button) v;
        Spinner spinner = (Spinner) findViewById(R.id.spinner);


        ArrayList states = new ArrayList();
        states.add("Alabama");
        states.add("Alaska");
        states.add("Arizona");
        states.add("Arkansas");
        states.add("California");
        states.add("Colorado");
        states.add("Connecticut");
        states.add("Delaware");
        states.add("Florida");
        states.add("Georgia");
        states.add("Hawaii");
        states.add("Idaho");
        states.add("Illinois");
        states.add("India");
        states.add("Iowa");
        states.add("Kansas");
        states.add("Kentucky");
        states.add("Louisiana");
        states.add("Maine");
        states.add("Maryland");
        states.add("Massachusetts");
        states.add("Michigan");
        states.add("Minnesota");
        states.add("Mississippi");
        states.add("Missouri");
        states.add("Montana");
        states.add("Nebraska");
        states.add("Nevada");
        states.add("New Hampshire");
        states.add("New Jersey");
        states.add("New Mexico");
        states.add("New York");
        states.add("North Carolina");
        states.add("North Dakota");
        states.add("Ohio");
        states.add("Oklahoma");
        states.add("Oregon");
        states.add("Pennsylvania");
        states.add("Rhode Island");
        states.add("South Carolina");
        states.add("South Dakota");
        states.add("Tennessee");
        states.add("Texas");
        states.add("Utah");
        states.add("Vermont");
        states.add("Virginia");
        states.add("Washington");
        states.add("West Virginia");
        states.add("Wisconsin");
        states.add("Wyoming");

        final
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, states);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);

    }


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}
  

Комментарии:

1. Я заметил, что вы указали «Индия» вместо «Индиана».

2. Спасибо, что уловили это!

Ответ №1:

При нажатии кнопки, по крайней мере, вам нужно получить значение в поле ввода, затем выбрать, что добавить в этот список ArrayList в соответствии с первой буквой.

Я не видел, чтобы ваш код получал входной текст.

Ответ №2:

ну, вы также можете создать подстроку строки состояния в цикле for и протестировать с помощью входных данных.Подстрока работает с начальными и конечными переменными, такими как Result=states.substring(0,1), поэтому в ней будет сохранена только первая буква