2016-12-12 62 views
0

我想刪除Android Studio中相對佈局的所有圖像,保存並稍後替換它們。如何證明一個對象是否是一個imageview?

RelativeLayout rl = (RelativeLayout) findViewById(R.id.relativeLayout); 
ArrayList al = rl.getTouchables(); 
rl.removeAllViews(); 
//do something 
for(int i=0; i<al.size(); i++) 
{ 
if(al.get(i).equals(new ImageView(this))) 
rl.addView((ImageView) al.get(i)); 
} 

的PROGRAMM不工作:(

+5

instanceof? ref:http://stackoverflow.com/questions/7313559/what-is-the-instanceof-operator-used-for –

回答

2

查找使用instanceof的ViewGroup中所有圖像的意見。一旦你擁有所有這些,從ViewGroup中刪除圖像。然後,你可以做任何你需要的工作做這些圖像:

final ViewGroup vg = (ViewGroup) findViewById(R.id.relativeLayout); 
final List<ImageView> images = new ArrayList<>(); 
for(int i = 0; i < vg.getChildCount(); i++) { 
    final View v = vg.getChildAt(i); 
    if (v instanceof ImageView) { 
     images.add((ImageView) v); 
    } 
} 
for (final ImageView v : images) { 
    vg.removeView(v); 
} 

當java的8個輥上我想我們就能夠做這樣的事情:

final ViewGroup vg = (ViewGroup) findViewById(R.id.relativeLayout); 
final List<ImageView> images = IntStream() 
    .range(0, vg.getChildCount()) 
    .mapToObj(vg::getChildAt) 
    .filter(ImageView.class::isInstance) 
    .map(ImageView.class::cast) 
    .collect(Collectors.toList()); 
images.stream().forEach(vg::removeView); 
相關問題