2016-06-26 6 views
-1

У меня есть 50 textviews.can я избежать инициализации все TextViews как this.Is есть любой код, чтобы инициализировать все эти виджеты автоматическиИнициализация Виджеты в андроида

t1 = (TextView) myFragmentView.findViewById(R.id.tvone); 
t2 = (TextView) myFragmentView.findViewById(R.id.tvtwo); 
t3 = (TextView) myFragmentView.findViewById(R.id.tvthree); 
t4 = (TextView) myFragmentView.findViewById(R.id.tvfour); 
t5 = (TextView) myFragmentView.findViewById(R.id.tvfive); 
t6 = (TextView) myFragmentView.findViewById(R.id.tvsix); 
t50 = (TextView) myFragmentView.findViewById(R.id.tvfifty); 
+0

вы говорите, что если я использую как this..I должны инициализировать все виджеты в обязательном порядке – Teja

+0

Короче Да, вы должны инициализировать все это. – Ironman

ответ

0

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

Method to get all EditTexts in a View

также вы можете создать карту, которая содержит "ID, TextView"

HashMap<Integer,EditText> myEditTextList = new HashMap<Integer,EditText>(); 

    for(int i = 0; i < myLayout.getChildCount(); i++) 
     if(myLayout.getChildAt(i) instanceof EditText) 
      myEditTextList.put( ((EditText) myLayout.getChildAt(i)).getId() , 
        ((EditText) myLayout.getChildAt(i))); 
0

Вы можете инициализировать все TextViews, переименовав их в «tv1 ... TV50», и использовать этот код:

int ressourceId; 
int tv_number = 50; 
TextView[] tv = new TextView[tv_number]; 

for(int i = 0; i < tv_number; i++) { 
    ressourceId = getResources().getIdentifier("tv" + (i + 1), "id", context.getPackageName()); 
    tv[i] = (TextView) myFragmentView.findViewById(ressourceId); 
} 
Смежные вопросы