In my fragment class, I add a child view element programmatically to my layout conditionally :
LinearLayout child = (LinearLayout) inflater.inflate(R.layout.child_view, null);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,100);
container.addView(child, params);
Since the above code will be run conditionally, so, at some point, I would like to check if the child view has added or not, how to make this checking programmatically?
I think you can simply use
findViewById(your_view_id)
method: If its result is null the view does not exists, otherwise the view is present
If you creating view via inflater, you can check his parent
if(view.getParent() != null) {...}
Sorry for late reply but you may try this alternative:
use container.getChildCount();
before adding and after adding a view. Like :
int x = container.getChildCount();
container.addView(child, params);
int y = container.getChildCount();
if(y > x)
Toast.makeText(context, "View Successfully Added!", Toas.LENGTH_SHORT).show();
I cannot write a comment so I write it here as a solution:
From API level 19 you can call isAttachedToWindow()
which doesn't help a lot, but if you are aiming API 19
or higher, then this should work by the documentation.
Or if you have a view instance to find, you could:
if (container.indexOfChild(childView) == -1) {
// Add child to container.
}
maybe you can try this
child.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
child.getViewTreeObserver().removeOnGlobalLayoutListener(this);
// add to parent
}
});
or this one
child.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
}
@Override
public void onViewDetachedFromWindow(View v) {
}
});