getSelectedItem Spinner 没有响应
No respond from getSelectedItem Spinner
我有一个带有类别列表的 Spinner,它从 JSON 获取数据。我想做的是,当 所有类别 以外的项目被选中时,子类别的另一个微调器变得可见,并根据其类别加载来自 JSON 的数据。
以前我设法做到了,但在搁置几天并完成其他部分后,它不再有效了。
由于第一个加载到旋转器中的是 所有类别,它触发了 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(" ", "%20");
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);
}
}
});
试试这个代码片段
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();
试试这个
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(" ", "%20");
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);
}
}
将您的代码更改为
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(" ", "%20")
generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString);
}
}
你可以直接使用参数(position)
而不是,
categoryString = parent.getItemAtPosition(position).toString();
你可以使用像,
categoryString = position.toString();
好吧,我不太明白我在逻辑上做了什么,因为它看起来没什么不同,但这解决了它。哦好吧..我猜是什么漂浮在船上。
根据 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(" ", "%20");
generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString);
}
}
我有一个带有类别列表的 Spinner,它从 JSON 获取数据。我想做的是,当 所有类别 以外的项目被选中时,子类别的另一个微调器变得可见,并根据其类别加载来自 JSON 的数据。
以前我设法做到了,但在搁置几天并完成其他部分后,它不再有效了。
由于第一个加载到旋转器中的是 所有类别,它触发了 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(" ", "%20");
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);
}
}
});
试试这个代码片段
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();
试试这个
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(" ", "%20");
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);
}
}
将您的代码更改为
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(" ", "%20")
generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString);
}
}
你可以直接使用参数(position)
而不是, categoryString = parent.getItemAtPosition(position).toString();
你可以使用像, categoryString = position.toString();
好吧,我不太明白我在逻辑上做了什么,因为它看起来没什么不同,但这解决了它。哦好吧..我猜是什么漂浮在船上。
根据 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(" ", "%20");
generateSubcategorySpinner(Config.GET_SUBCATEGORY_URL+"?category="+categoryString);
}
}