2016-12-21 5 views
0

Я создал текстовые изображения динамически на основе значений массива.Изменить цветное текстовое представление на основе позиции или флага

Его отображение прекрасное. Моя проблема: Если у меня есть 5 значений в моем массиве вместе с значениями флага (то есть 0 и 1)

Если я нажму на текстовый индекс 2, он содержит флаг «0» означает отображение красного цвета и индекс содержит «1» необходимо отобразить в зеленом цвете.

Как достичь этого? Я много пробовал.

for (int i = 0; i < array.size(); i++) { 
       final TextView textView = new TextView(Activity.this); 
       int parentLayoutHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
         Constants.DRAWER_LIST_ITEM_LAYOUT_HEIGHT_DIP, getResources().getDisplayMetrics()); 
       LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, parentLayoutHeight); 
       params.setMargins(0, 0, 0, 20); 
       textView.setLayoutParams(params); 
       textView.setText(array.get(i).getOptions()); 
       textView.setTag(array.get(i).getFlag()); 
       textView.setId(Integer.parseInt(array.get(i).getId())); 
       textView.setGravity(Gravity.CENTER); 
       textView.setTypeface(Typeface.SANS_SERIF); 
       textView.setPadding(0, 20, 0, 20); 
       textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, Constants.DRAWER_LIST_ITEM_TEXT_SIZE_SP); 
       textView.setBackgroundResource(R.drawable.rounded_rectangle_1); 
       textView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         textView.setTextColor(getResources().getColor(R.color.white)); 
         for (int i = 0; i < array.size(); i++) { 
          if (parsedAnswers.get(i).getFlag().equalsIgnoreCase("0")){ 
           textView.setBackgroundResource(R.drawable.rounded_rectangle_red); 
          }else{ 
           textView.setBackgroundResource(R.drawable.rounded_rectangle_green); 
          } 
         } 
        } 
       }); 
       mLayout.addView(textView); 
      } 

ответ

0

Из вашего примера:

public void onClick(View v) { 
     textView.setTextColor(getResources().getColor(R.color.white)); 
     for (int i = 0; i < array.size(); i++) { 
     if (parsedAnswers.get(i).getFlag().equalsIgnoreCase("0")){ 
      textView.setBackgroundResource(R.drawable.rounded_rectangle_red); 
     }else{ 
      textView.setBackgroundResource(R.drawable.rounded_rectangle_green); 
     } 
     } 
    } 

Я думаю, что вам нужно, это тег TextView, вместо того, чтобы делать петлю, которая связана с parsedAnswers, как:

String tag = (String)textView.getTag(); 
if (tag.equalsIgnoreCase("0")){ 
    textView.setBackgroundResource(R.drawable.rounded_rectangle_red); 
}else{ 
    textView.setBackgroundResource(R.drawable.rounded_rectangle_green); 
} 

, и если ваш массив изменяется динамически, вы можете установить только внутреннее положение:

textView.setTag(i); 

и в слушателе

int position = (Integer)textView.getTag(); 
if (parsedAnswers.get(position).getFlag().equalsIgnoreCase("0")){ 
    textView.setBackgroundResource(R.drawable.rounded_rectangle_red); 
}else{ 
    textView.setBackgroundResource(R.drawable.rounded_rectangle_green); 
} 

также для изменения цвета текста вместо фона, вы можете использовать textView.setTextColor (цвет)

+0

я это исправил, но в любом случае спасибо много за ваш ответ , Я попробовал ваш ответ, и его работа, принятая, может помочь кому-то еще. –

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