2016-10-23 64 views
-4

我想声明和隐藏活动的一些视图,但它太复杂并且消耗大量时间。我可以用循环或其他方式做到这一点吗?声明多个具有相似名称的视图(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); 

回答

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

“为(CardView C:卡){ cards.setVisibility(View.INVISIBLE); }' –

+0

第二部分不适合我 –

+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只在您的容器中只有一个项目,并且您想隐藏所有这些项目,那么您可以简单地设置父级布局的可见性。

relativeLayout.setVisibility(View.GONE);

相关问题