spinner部分用法

来源:互联网 发布:mac网页收藏快捷键 编辑:程序博客网 时间:2024/04/29 15:09

1;让默认的提示值,不出现在下拉列表中


事例代码:

public ArrayList<String> arrList = new ArrayList<String>();private void SelectHistory(){    arrList.add(getString(R.string.Select));    arrList.add(getString(R.string.all_device));    arrList.add(getString(R.string.SelectInvert));    mSpinnerSelect = (Spinner) mActivity.findViewById(R.id.spinner_device);    ArrayAdapter<String> mSpinnerSelectAdapter = new ArrayAdapter<String>(getActivity(), R.layout            .layout_history_report_lv_option_items, arrList) {        @Override        public View getView(int position, View convertView, ViewGroup parent) {            View v = super.getView(position, convertView, parent);            Iterator iter = arrList.iterator();            while (iter.hasNext()) {                if (iter.next().equals(getString(R.string.Select))) {                    iter.remove();                }            }            return v;        }        @Override        public int getCount() {            return arrList.size();        }    };    mSpinnerSelectAdapter.setDropDownViewResource(R.layout            .layout_history_report_lv_option_items);    mSpinnerSelect.setAdapter(mSpinnerSelectAdapter);    mSpinnerSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {        @Override        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {            if ( arrList.get(0).equals(getString(R.string.all_device)))            {                mLvAdapter.selectedAll();            } else if(arrList.get(1).equals(R.string.SelectInvert))            {                if (mLvAdapter.reverseSelected())                {                    refreshState();                }            }        }        @Override        public void onNothingSelected(AdapterView<?> parent) {        }    });}

2:获取点击的值:

  1.   //拿到被选择项的值  
  2.                 str = (String) sp.getSelectedItem();  

方法二:

        Spinner spinner = (Spinner) adapterView; 


String itemContent = (String) adapterView .getItemAtPosition(position);


注:下拉选择事件能不能重复触发同一项选项内容


解:

  1.  @Override  
  2.         public void onItemSelected(AdapterView<?> arg0, View arg1,  
  3.                 int arg2, long arg3) {  
  4.             // TODO Auto-generated method stub  
  5.             try {  
  6.                 //以下三行代码是解决问题所在  
  7.                 Field field = AdapterView.class.getDeclaredField("mOldSelectedPosition");  
  8.                 field.setAccessible(true);  //设置mOldSelectedPosition可访问  
  9.                 field.setInt(spinner, AdapterView.INVALID_POSITION); //设置mOldSelectedPosition的值  
  10.             } catch (Exception e) {  
  11.                 e.printStackTrace();  
  12.             }  
  13.         }  
  14.   
  15.         @Override  
  16.         public void onNothingSelected(AdapterView<?> arg0) {  
  17.             // TODO Auto-generated method stub  
  18.               
  19.         }  
  20.     };  


0 0
原创粉丝点击