2016-12-21 27 views
0

我已經基於數組值創建textviews。根據位置或標誌更改顏色textview

顯示正常。我的問題是 如果假設我在我的陣列5倍的值與標誌值一起(即0和1)

如果我點擊TextView的索引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

我解決了這個問題,但無論如何,非常感謝您的回答。我試過你的答案也是它的工作,接受它也可以幫助別人。 –