2016-12-12 8 views
0

Androidスタジオの相対レイアウトですべての画像ビューを削除し、保存して後で置き換えたいとします。オブジェクトがイメージビューであるかどうかを証明する方法は?

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); 
関連する問題