#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
likeString 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);
}
}