2016-10-23 3 views
-4

アクティビティの一部のビューを宣言して非表示にしたいのですが、複雑すぎて多くの時間を消費します。ループなどでこれを行うことはできますか?類似の名前の複数のビューを宣言する(Androidスタジオ)

//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); 

答えて

0

私は、これはそれを行うための良い方法になると思う。

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)); 
} 

今、あなたはカードのアレイ内のすべてのあなたのカードの景色を眺めることができます。 あなたがそれらを目に見えないようにしたい場合は、あなたがこのように簡単にそれを行うことができます。

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

」{ cards.setVisibility(View.INVISIBLE)。 } ' –

+0

2番目の部分が私のために働いていません –

+0

oopssss .....私はミスをしました....もう一度答えを見てください –

0

カードビューは、相対的なレイアウトのようないくつかのコンテナの下にある場合、あなたはチャイルズを反復処理することができます。

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

さらに、特定のカードビューを除外する条件チェックを追加できます。

CardViewsがコンテナ内の唯一のアイテムであり、それらをすべて非表示にしたい場合、yoiは単に親レイアウトの可視性を設定できます。 (CardViewのC:カード)用

relativeLayout.setVisibility(View.GONE);

関連する問題