2016-11-16 4 views
0

У меня есть пара прядильщиков; один для выбора текста, а другой - для изменения цвета текста. У меня также есть глобальное текстовое представление, в котором я устанавливаю выбранный элемент, когда пользователь делает выбор. Когда я выбираю цвет шрифта из моего цветного счетчика, цвет глобального текстового изменения изменяется, как и предполагалось. Затем, когда я выбираю другое текстовое изображение в mt textview spinner и выбираю тот же цвет, мой текст, только что выделенный цвет текста не изменяется. Довольно странно. Но если я выбираю другой цвет, чем последний использованный цвет, он меняет цвет моего недавно выбранного текста. Я попытался вызвать notifydatachanged() в адаптере цвета после каждого изменения цвета, но это не сработало. Есть ли какая-нибудь работа? Вот код.Spinner выбранный элемент, не отвечающий на выбор во второй раз

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? –

 Смежные вопросы

  • Нет связанных вопросов^_^