2016-11-16 6 views
0

私はスピナーをいくつか持っています。 1つはテキスト選択用、もう1つはテキストカラーを変更するためのものです。また、ユーザーが選択をしたときに選択した項目を設定するグローバルなテキストビューもあります。 私のカラースピナーからフォントの色を選択すると、グローバルなテキストビューの色が変わったように変わります。次に、mt textview spinnerで別のテキストビューを選択し、同じ色を選択すると、新しく選択されたテキストビューカラーが変更されません。かなり奇妙な。しかし、最後に使用した色とは異なる色を選択すると、新しく選択したテキストビューの色が変わります。 各色の変更後にnotifydatachanged()をカラーアダプタで呼び出そうとしましたが、動作しませんでした。何か回避策はありますか? ここにコードがあります。スピナーが選択した項目が2回目の選択に反応しない

private void setUpColorSpinner() { 
     // Create an ArrayAdapter using the string array and a default spinner layout 
     final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.font_colors, R.layout.spinner_list_item); 

     // Specify the layout to use when the list of choices appears 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     //Apply the adapter to the spinner 
     fColorspinner.setAdapter(adapter); 

     fColorspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long l) { 
       switch (parent.getSelectedItemPosition()) { 
        case 0: 
         //leave it blank to set the color to the default color 
         setFontColor(ContextCompat.getColor(context, R.color.WHITE)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 1: 
         setFontColor(ContextCompat.getColor(context, R.color.BLACK)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 2: 
         setFontColor(ContextCompat.getColor(context, R.color.WHITE)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 3: 
         setFontColor(ContextCompat.getColor(context, R.color.BLUE)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 4: 
         setFontColor(ContextCompat.getColor(context, R.color.GREEN)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 5: 
         setFontColor(ContextCompat.getColor(context, R.color.Yellow)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 6: 
         setFontColor(ContextCompat.getColor(context, R.color.RED)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 7: 
         setFontColor(ContextCompat.getColor(context, R.color.PURPLE)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 8: 
         setFontColor(ContextCompat.getColor(context, R.color.ORANGE)); 
         adapter.notifyDataSetChanged(); 
         break; 
        case 9: 
         setFontColor(ContextCompat.getColor(context, R.color.OLIVE)); 
         adapter.notifyDataSetChanged(); 
         break; 
       } 

      } 

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

      } 
     }); 
    } 

private void setUpTextViewsSpinner() { 
     // Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> cardtext = ArrayAdapter.createFromResource(this, R.array.textviews, 
       R.layout.spinner_list_item); 

     // Specify the layout to use when the list of choices appears 
     cardtext.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // Apply the adapter to the spinner 
     fTextViewsspinner.setAdapter(cardtext); 
     final DisplayMetrics tvsmetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(tvsmetrics); 

     fTextViewsspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
       switch (adapterView.getSelectedItemPosition()) { 
        case 0: 
         //selectedText.setText(""); 
         break; 
        case 1: 
         selectedText = text1; 
         break; 
        case 2: 
         selectedText = text2; 
         break; 
       } 
      } 

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

      } 
     }); 
    } 
+0

コードを表示できますか? –

+0

これらのメソッドはどのクラスに含まれていますか?有効なJava構文で表示してください: 'class MyClass {... methods go here ...}'。また、いつこれらのメソッドを呼びますか? –

+0

これらは主なアクティビティクラスに含まれています。 –

答えて

0

ご質問によると、使用しているイベントリスナーに問題があるはずです。

イベントリスナーをOnItemSelectedListenerまたはOnTouchListenerに切り替えてみてください。

+0

私のOnItemClickListenerに問題がある場合、最初はどのように動作しますか? –

関連する問題