Как использовать массив String с несколькими LinearLayouts в Android Studio - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу использовать массив String в качестве инкремента LinearLayouts, как указано ниже для изменения цвета фона за 12 месяцев с января по DE C по текущему месяцу. Но это совсем не работает в соответствии с кодом ниже. Что мне не хватает, пожалуйста, предоставьте мне правильный фрагмент с примером.

String[] string = {linear_layout1, linear_layout2, linear_layout3, linear_layout4, linear_layout5, linear_layout6, linear_layout7, linear_layout8, linear_layout9, linear_layout10, linear_layout11, linear_layout12};
   if(monthOfYear <= 12) {
      for(int i = 1; i <= 12; i++) 
         {
            string.setBackgroundColor(getResources().getColor(R.color.GRAY));
         }
   }

Заранее спасибо ..

1 Ответ

0 голосов
/ 24 апреля 2020

чтобы я получил ваш вопрос, у вас есть много просмотров, которые вы хотите изменить цвет фона их правильно? если это так, то ваш код имеет проблему, и решение таково:

LinearLayout[] lns= {linear_layout1, linear_layout2, linear_layout3, linear_layout4, linear_layout5, linear_layout6, linear_layout7, linear_layout8, linear_layout9, linear_layout10, linear_layout11, linear_layout12};
   if(monthOfYear <= 12) {
      for(int i = 0; i <= 11; i++) 
         {
            lns[i].setBackgroundColor(getResources().getColor(R.color.GRAY));
         }
   }

, поэтому прежде всего LinearLayouts - это Views, и вам нужно иметь массив LinearLayouts или Views, а не String [] (почему String ?) Вторая проблема состояла в том, что вы читаете из массива, поэтому вам нужно получить объект с переменной 'i', которую вы объявили в for l oop, и заставить каждый LinearLayout изменить и работать с ним. и чтобы это было проще, я изменил для l oop начало с 1 до 0 и конец с 12 до 11. (вы можете использовать for-each вместо for, так будет легче ...) Любая другая проблема? просто спросите.

Редактировать

Хорошо, так как я думаю, что я видел ваши комментарии, я думаю, что эти linear_layout1, ... просто идентификаторы из вашего. xml файл. Правильно? в этом случае ваш код должен выглядеть следующим образом:

LinearLayout[] lns= {(LinearLayout)findViewById(R.id.linear_layout1),(LinearLayout)findViewById(R.id.linear_layout2),(LinearLayout)findViewById(R.id.linear_layout3),(LinearLayout)findViewById(R.id.linear_layout4),(LinearLayout)findViewById(R.id.linear_layout5),(LinearLayout)findViewById(R.id.linear_layout6),(LinearLayout)findViewById(R.id.linear_layout7),(LinearLayout)findViewById(R.id.linear_layout8),(LinearLayout)findViewById(R.id.linear_layout9),(LinearLayout)findViewById(R.id.linear_layout10),(LinearLayout)findViewById(R.id.linear_layout11),(LinearLayout)findViewById(R.id.linear_layout12)};
      for(int i = 0; i <= 11; i++) 
         {
            lns[i].setBackgroundColor(getResources().getColor(R.color.GRAY));
         }

, и я думаю, что if-оператор тоже бесполезен, потому что for для l oop всегда 12 раз, так что это, если о? так что я тоже это убрал.

...