2016-10-23 5 views
-4

Ich möchte einige Ansichten zu der Aktivität deklarieren und ausblenden, aber es ist zu kompliziert und verbraucht viel Zeit. Kann ich das mit einer Schleife oder so machen?Erklären Sie mehrere Ansichten mit einem ähnlichen Namen (Android Studio)

//Startup 
    //Hide msgs 
    CardView msgUser1v = (CardView) findViewById(R.id.msgUser1v); 
    msgUser1v.setVisibility(View.GONE); 
    CardView msgBot1v = (CardView) findViewById(R.id.msgBot1v); 
    msgBot1v.setVisibility(View.GONE); 
    CardView msgUser2v = (CardView) findViewById(R.id.msgUser2v); 
    msgUser2v.setVisibility(View.GONE); 
    CardView msgBot2v = (CardView) findViewById(R.id.msgBot2v); 
    msgBot2v.setVisibility(View.GONE); 
    CardView msgUser3v = (CardView) findViewById(R.id.msgUser3v); 
    msgUser3v.setVisibility(View.GONE); 
    CardView msgBot3v = (CardView) findViewById(R.id.msgBot3v); 
    msgBot3v.setVisibility(View.GONE); 
    CardView msgUser4v = (CardView) findViewById(R.id.msgUser4v); 
    msgUser4v.setVisibility(View.GONE); 
    CardView msgBot4v = (CardView) findViewById(R.id.msgBot4v); 
    msgBot4v.setVisibility(View.GONE); 
    CardView msgUser5v = (CardView) findViewById(R.id.msgUser5v); 
    msgUser5v.setVisibility(View.GONE); 
    CardView msgBot5v = (CardView) findViewById(R.id.msgBot5v); 
    msgBot5v.setVisibility(View.GONE); 

Antwort

0

Ich denke, dass dies ein guter Weg, es zu tun sein wird:

List<CardView> cards = new ArrayList<CardView>(); 
for (int i = 1 ; i <= cardsCount ; i++) 
{ 
    int id = getResources().getIdentifier("msgBot"+i+"v", "id", context.getPackageName()); 
    cards.add((CardView) findViewById(id)); 
} 

Jetzt können Sie alle Ihre Kartenansichten in-Karten-Array haben. Wenn Sie sie unsichtbar machen möchten, können Sie es so leicht tun:

for(CardView c : cards){ 
    c.setVisibility(View.INVISIBLE); 
} 
+0

‚für (CardView c: cards) { cards.setVisibility (View.INVISIBLE); } ' –

+0

der 2. Teil funktioniert nicht für mich –

+0

oopssss ..... Ich habe einen Fehler gemacht .... bitte sehen Sie die Antwort erneut –

0

, wenn Ihre Karte Ansichten unter einem Container wie relativ Layout sind, dann können Sie den Childs durchlaufen.

int childs = relativeLayout.getChildCount(); 
for(int i=0; i<childs; i++){ 
    View child = relativeLayout.getChildAt(i); 
    if(child instanceOf CardView){ 
      child.setVisibility(View.GONE); 
    } 
} 

Sie können weitere Bedingungsprüfungen hinzufügen, um bestimmte Kartenansichten auszuschließen.

Wenn CardViews nur das Element in Ihrem Container sind und Sie alle ausblenden möchten, können Sie einfach die Sichtbarkeit des übergeordneten Layouts festlegen.

relativeLayout.setVisibility(View.GONE);

Verwandte Themen