2016-09-13 17 views
-1

私はカスタムスピナーを持っています。選択した項目は、それがヒントだときSpinner onItemSelectedは、選択した項目がヒントであるときに呼び出されません。

@Override 公共ボイドsetOnItemSelectedListener(最終OnItemSelectedListenerリスナー){

final OnItemSelectedListener onItemSelectedListener = new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      if (hint != null || floatingLabelText != null) { 
       if (!floatingLabelVisible && position != 0) { 
        showFloatingLabel(); 
       } else if (floatingLabelVisible && position == 0) { 
        hideFloatingLabel(); 
       } 
      } 

      if (position != lastPosition && error != null) { 
       setError(null); 
      } 
      lastPosition = position; 

      if (listener != null) { 
       position = hint != null ? position - 1 : position; 
       listener.onItemSelected(parent, view, position, id); 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      if (listener != null) { 
       listener.onNothingSelected(parent); 
      } 
     } 
    }; 

    super.setOnItemSelectedListener(onItemSelectedListener); 
} 

スピナーonItemSelectedは呼び出されません。 したがって、ユーザー選択スピナーヒントonItemSelectedが呼び出されないとき。

私はどのようにスピナーのヒント選択を処理できますか?

+0

手動でも – Chetna

+1

選択する上で、残念ながら、より良い説明 – siddhesh

+0

@Chetnaを取得するためのコードを追加してください位置を確認することができますヒント、onItemSelectedは呼び出されず、私はポジションを取得できません。 – Kenji

答えて

0
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      if (position == 0) { 
       Toast.makeText(getActivity(), "its your hint ", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(getActivity(), "do here what you want ", Toast.LENGTH_SHORT).show(); 
      } 
     } 


     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
+0

ここに** sp **はあなたのスピナーオブジェクトです – Chetna

0

これを試してください。

Spinner spinner_subcate = (Spinner) findViewById(R.id.subcat_spin);  

ArrayAdapter dataAdapter1 =新しいArrayAdapter(MainActivity.this、R.layout.spinner_item){

    @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 

         View v = super.getView(position, convertView, parent); 
         if (position == getCount()) { 
          ((TextView)v.findViewById(android.R.id.text1)).setText(""); 
          ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount())); //"Hint to be displayed" 
         } 

         return v; 
        } 

        @Override 
        public int getCount() { 
         return super.getCount()-1; // you dont display last item. It is used as hint. 
        } 

       }; 

       dataAdapter1.setDropDownViewResource(R.layout.spinner_dropdown_item); 

       dataAdapter1.add("list item1"); 
       dataAdapter1.add("list item2"); 
       dataAdapter1.add("list item3"); 
       dataAdapter1.add("hint"); 

       // Spinner click listener 
       spinner_subcate.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
         String sub_cat = parent.getItemAtPosition(position).toString(); 
         Log.d("sub cat::",sub_cat); 
        } 

        @Override 
        public void onNothingSelected(AdapterView<?> parent) { 

        } 
       }); 

       // attaching data adapter to spinner 
       spinner_subcate.setAdapter(dataAdapter1); 
       spinner_subcate.setSelection(dataAdapter1.getCount()); //set the hint the default selection so it appears on launch. 
関連する問題