如何从此片段中的onItemSelectedListener中获取微调器单击的项目?
我有以下代码。我希望onItemSelectedListener将所选字符串的值放入store_id以供进一步处理。我使用Toast来检查它,因为我无法将监视放在监听器上,而store_id是默认为空。微调员显示我的各种字符串,但点击时消失。有任何想法吗?我不能想象我的问题是具有在该片段在一起的所有代码... output right before clicking on a store如何从此片段中的onItemSelectedListener中获取微调器单击的项目?
public class ChooseStoreFragment extends Fragment implements AdapterView.OnItemSelectedListener {
ArrayList<String> store_array = new ArrayList<>();
String store_id;
//implementing the AdapterView.OnItemSelectedListener
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String user_store_id = parent.getItemAtPosition(position).toString();//doesn't show up in toast
store_id = parent.getSelectedItem().toString();//doesn't show up in toast
Toast.makeText(getActivity(), user_store_id + "=user_store_id.", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(parent.getContext(),"Nothing selected",Toast.LENGTH_SHORT).show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View thisView = inflater.inflate(fragment_choose_store, container, false);
final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getContext(),android.R.layout.simple_spinner_dropdown_item,store_array);
spinner.setAdapter(adapter);
AdapterView.OnItemSelectedListener mListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
store_id = parent.getSelectedItem().toString();
} //still never shows up in toast
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(getActivity(), "none found = user_store_id.", Toast.LENGTH_SHORT).show(); //still nothing
}
};
spinner.setOnItemSelectedListener(mListener);
您已经注册了一个侦听器spinner
,所以你不必做ChooseStoreFragment
执行该listener
再次。
spinner.setOnItemSelectedListener(mListener);
它应该是这样的
public class ChooseStoreFragment extends Fragment {
ArrayList<String> store_array = new ArrayList<>();
String store_id;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View thisView = inflater.inflate(fragment_choose_store, container, false);
final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getContext(), android.R.layout.simple_spinner_dropdown_item, store_array);
spinner.setAdapter(adapter);
AdapterView.OnItemSelectedListener mListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
store_id = parent.getSelectedItem().toString();
} //still never shows up in toast
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(getActivity(), "none found = user_store_id.", Toast.LENGTH_SHORT).show(); //still nothing
}
};
spinner.setOnItemSelectedListener(mListener); // Register this spinner for a mListener
}
}
或者,如果你想为你的类
public class ChooseStoreFragment extends Fragment implements AdapterView.OnItemSelectedListener {
ArrayList<String> store_array = new ArrayList<>();
String store_id;
//implementing the AdapterView.OnItemSelectedListener
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String user_store_id = parent.getItemAtPosition(position).toString();//doesn't show up in toast
store_id = parent.getSelectedItem().toString();//doesn't show up in toast
Toast.makeText(getActivity(), user_store_id + "=user_store_id.", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(parent.getContext(), "Nothing selected", Toast.LENGTH_SHORT).show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View thisView = inflater.inflate(fragment_choose_store, container, false);
final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getContext(), android.R.layout.simple_spinner_dropdown_item, store_array);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);// register this fragment with a listener
}
}
注册登记监听器只有1听众!
更新:
public class ChooseStoreFragment extends Fragment implements AdapterView.OnItemSelectedListener {
ArrayList<String> store_array = new ArrayList<>();
String store_id;
//implementing the AdapterView.OnItemSelectedListener
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String user_store_id = store_array.get(position);
Toast.makeText(getActivity(), user_store_id, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(getActivity(), "Nothing selected", Toast.LENGTH_SHORT).show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View thisView = inflater.inflate(R.layout.fragment_choose_store, container, false);
final Spinner spinner = (Spinner) thisView.findViewById(R.id.stores_spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getActivity(), android.R.layout.simple_spinner_dropdown_item, store_array);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);// register this fragment with a listener
return thisView;
}
}
我喜欢你的代码,谢谢你,干净利落,但仍然没有数据从onItemSelected到store_id。你可以看看parent.getSelectedItem()行/方法吗? –
因为你store_array不包含任何 –
但它时,它会通过一个VolleyRequest装载和微调显示的数据。我的输出中的截图在我的问题中尚未被允许(低排名)。你会看看截图吗? –
你已经实现了两个'AdapterView.OnitemSelectedListener'。你想要哪一个? – BakaWaii
第一个。第二个实现只是试图让更多的地方成为一个问题!? –