android fragment vs spinner onitemselected listener

时间:2014-01-30 08:30:18

标签: android spinner adapter

我有一个带有微调器的片段,我在其中添加来自互联网的数据

在onCreateView()中我初始化我的微调器并为其添加监听器

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_main, null);

        cityChoose = (Spinner) view.findViewById(R.id.cityChoose);
        cityChoose.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {            
                    HashMap temp = new HashMap();
                    temp.put("finset", cities.get(position).getValue());
                    HashMap map = new HashMap();
                    map.put("city", temp);
                    new DownloadData().execute(new Object[] { PARAM_DEALS_LIST,
                            map, getStoreID(), "1", "15" });
                }
            }

然后在onCreate上我首先将数据添加到微调器

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (Tools.isNetworkAvailable(getActivity().getApplicationContext())) {
            new DownloadData().execute(new Object[] { PARAM_BOTH, "",
                    getStoreID(), "1", "15" });
        } else {
            Toast.makeText(getActivity(),
                    getResources().getString(R.string.toastNoInternet),
                    Toast.LENGTH_SHORT).show();
        }
    }

然后,如果用户从这个片段转到另一个片段并从中单击后退按钮,我需要在微调器中显示我早期添加的数据我是这样做的

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (spinAdapter != null) {
            cityChoose.setAdapter(spinAdapter);
        }
    }

我的问题是:

如果我第一次去片段,spinner将下载数据并通过适配器填充它,然后如果我去另一个片段,然后按回按钮,微调器将从适配器获取数据,一切正常,但如果我在使用微调器的片段单击其中一个项目,然后转到另一个片段然后返回它将初始化其onItemSelected()方法并再次下载数据,但适配器已经拥有此数据。 当我从另一个片段回到这个片段时,我怎么能避免在微调器中启动onItemSelected()?

0 个答案:

没有答案