Нет ответа от getSelectedItem Spinner

#android #android-spinner

#Android #android-счетчик

Вопрос:

У меня есть счетчик со списком категорий, которые получают данные из JSON. Я хочу сделать так, чтобы при выборе элемента, отличного от All Category, другой счетчик подкатегории становился видимым и загружался данными из JSON в соответствии с его категорией.

Ранее мне удавалось это сделать, но после того, как я оставил его на несколько дней и выполнил другие части, он больше не работает.

Поскольку первый, загруженный в spinner, — это категория All, он сработал setOnItemSelectedListener() и скрылся subcategorySpinner . Если выбран другой элемент, subcategorySpinner он по-прежнему не отображается.

Что-то не так с логикой кода? Пожалуйста, помогите.

 categorySpinner = (Spinner) rootView.findViewById(R.id.categorySpinner);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.spinner_item, categoryList);
adapter2.setDropDownViewResource(R.layout.spinner_dropdown_item);
categorySpinner.setAdapter(adapter2);

categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
categoryString = categorySpinner.getSelectedItem().toString().replace(" ", " ");
if (categorySpinner.getSelectedItem().toString().equals("All Category")) {
   Log.d("debug", "all category");
   subcategorySpinner.setVisibility(View.GONE);
} else {
   Log.d("debug", "other than all category");
   subcategorySpinner.setVisibility(View.VISIBLE);
   generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL "?category=" categoryString);
}
}


});
 

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

1. @HRaval ты имеешь в виду, прокомментировать это?

2. @SathishKumarJ Я получаю только журнал «всех категорий»

3. сначала проверьте, что вы получаете от Spinner like String str = spinnerName.getSelectedItem().toString();

4. используйте categorySpinner.getItemIdAtPosition(позиция) вместо getSelectedItem()

5. @SathishKumarJ в журнале, есть все категории

Ответ №1:

измените свой код на

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


// On selecting a spinner item
categoryString = parent.getItemAtPosition(position).toString();
Log.d("debug", categoryString "..." position);

if (categoryString.equals("All Category")) {
   Log.d("debug", "all category");
   subcategorySpinner.setVisibility(View.GONE);
} else {
   Log.d("debug", "other than all category");
   subcategorySpinner.setVisibility(View.VISIBLE);

   categoryString = categoryString.replace(" ", " ")
   generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL "?category=" categoryString);
}
}
 

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

1. все то же самое. как будто if else он не запускался снова после выбора элемента (не вошел в else систему)

2. пожалуйста, запустите приведенный выше код и скажите мне, что вы получаете в журнале после изменения выбора

3. вывод все тот же

4. я прошу журнал … не для вывода, какой элемент и позицию вы получаете в журнале … пожалуйста, опубликуйте его

5. All Category...0 , all category

Ответ №2:

Попробуйте этот фрагмент кода

 Spinner dropdown = (Spinner) findViewById(R.id.type);
final String[] items = new String[]{"SELECT TYPE OF OFFER","PERCENTAGE", "AMOUNT", "ITEM"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.spinner_item, items);
dropdown.setAdapter(adapter);
String selectedItem = dropdown.getSelectedItem().toString();
 

Ответ №3:

попробуйте это

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


// On selecting a spinner item
         categoryString = parent.getItemAtPosition(position).toString().replace(" ", " ");



if (categoryString.equals("All Category")) {
   Log.d("debug", "all category");
   subcategorySpinner.setVisibility(View.GONE);
} else {
   Log.d("debug", "other than all category");
   subcategorySpinner.setVisibility(View.VISIBLE);
   generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL "?category=" categoryString);
}
}
 

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

1. вывод все тот же

Ответ №4:

Вы можете напрямую использовать аргумент,(позиция)

Вместо, categoryString = parent.getItemAtPosition(позиция).toString();

Вы можете использовать, например, categoryString = position .toString();

Ответ №5:

Ну, я не совсем понимаю, что я сделал логически, потому что, похоже, ничего особенного, но это решило проблему. Ну что ж.. я думаю, что бы ни плавало в лодке.

Используя предложение H Raval, я переместил if else его в метод, и теперь он работает так, как я хотел.

 categorySpinner = (Spinner) rootView.findViewById(R.id.categorySpinner);
                ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.spinner_item, categoryList);
                adapter2.setDropDownViewResource(R.layout.spinner_dropdown_item);
                categorySpinner.setAdapter(adapter2);
                String str = categorySpinner.getSelectedItem().toString();
                Log.d("debug", "str " str);

                categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        categoryString = parent.getItemAtPosition(position).toString();
                        Log.d("debug", categoryString "..." position);

                        subCategorySpinnerView(categoryString);
                    }
                });

private void subCategorySpinnerView(String categoryString) {

    if (categoryString.equals("All Category")) {
        Log.d("debug", "all category");
        subcategorySpinner.setVisibility(View.GONE);
    } else {
        Log.d("debug", "other than all category");
        subcategorySpinner.setVisibility(View.VISIBLE);

        categoryString = categoryString.replace(" ", " ");
        generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL "?category=" categoryString);
    }

}