2017-05-31 18 views
-1

私はアイテムのリストを表示するはずの私のアプリにスピナーを持っています。最初はデフォルトテキストが表示され、選択が完了すると、すべてのアイテムリストがドロップダウンメニューに表示されます。スピナーの問題は、最初の項目を選択するときにデフォルト値が選択されることです。私はいくつかのことを知っています、それは簡単な質問かもしれません。しかし、もしあなたがdownvoteしようとしている、私は可能なすべての解決策を試みたので、それを行う前に答えを提案してください。以下は私のコードを投稿しています。見てください。前もって感謝します。選択した項目のデフォルト値を選択しているスピナーの最初の項目を選択する

The spinner Adapter: 

    public class CustomSpinnerAdapter extends ArrayAdapter<String> { 

    Context context; 
    ArrayList<String> objects; 
    String firstElement; 
    boolean isFirstTime; 

    public CustomSpinnerAdapter(Context context, int textViewResourceId, ArrayList<String> objects, String defaultText) { 
     super(context, textViewResourceId, objects); 
     this.context = context; 
     this.objects = objects; 
     this.isFirstTime = true; 
     setDefaultText(defaultText); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     if(isFirstTime) { 
      objects.set(0, firstElement); 
      isFirstTime = false; 
     } 
     return getCustomDropdownView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     notifyDataSetChanged(); 
     return getCustomView(position, convertView, parent); 
    } 

    public void setDefaultText(String defaultText) { 
     this.firstElement = objects.get(0); 
     objects.set(0,defaultText); 
    } 

    public View getCustomView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = inflater.inflate(R.layout.spinner_row, parent, false); 
     TextView label = (TextView) row.findViewById(R.id.spinnerText); 
     label.setText(objects.get(position)); 

     return row; 
    } 
    public View getCustomDropdownView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = inflater.inflate(R.layout.simple_spinner_dropdown_item, parent, false); 
     CheckedTextView label = (CheckedTextView) row.findViewById(R.id.text1); 
     label.setText(objects.get(position)); 

     return row; 
    } 

} 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

In the mainactivity: 

          CustomSpinnerAdapter customSpinnerAdapter = new CustomSpinnerAdapter((Context)MainActivity.this, 
           R.layout.spinner_row, dcuName, "Select One DCU"); 
         dcuListScheduler.setAdapter(customSpinnerAdapter); 
+0

ここで 'setOnItemSelectedListener'メソッドはありますか? –

+0

あなたはスピナーの最初の項目の選択を防ぐ必要があるということを意味しますか? –

答えて

0

チェック位置、それはおろし金であるならば、0それは本当

を返します
spinner_select_page.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

        if (position>0) 
        { 
         return true; 

       } 

      } 

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

      } 
     }); 
0

あなたはsetOnItemSelectedListenerメソッドを実装する必要があります。

dcuListScheduler.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

       @Override 
       public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3) 
       { 

        if(dcuListScheduler.getSelectedItem().toString().equals("Select One DCU")) 
         { 
         // Select Default 
         } 
        else 
         { 
         // Select Other Options 
         } 
       } 

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

       } 

      }); 
関連する問題