spinner部分用法

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


事例代码:

public ArrayList arrList = new ArrayList();
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 mSpinnerSelectAdapter = new ArrayAdapter(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.     };  


你可能感兴趣的:(spinner部分用法)