/**
         * @param jsonObject : json object
         * @param parent : parent viewGroup
         * @param holderClass : class that will be created as an holder and attached as a tag in the View, If contains HashMap ids will replaced with idsMap
         * @return the view that created
         */
        public static View createView(Context context, JSONObject jsonObject, ViewGroup parent, Type holderClass)
        {
            if (jsonObject == null)
            {
                return(null);
            }

            JavaDictionary <string, int> ids = new JavaDictionary <string, int>();

            View container = createViewInternal(context, jsonObject, parent, ids);

            if (container == null)
            {
                return(null);
            }

            if (container.GetTag(INTERNAL_TAG_ID) != null)
            {
                DynamicHelper.applyLayoutProperties(container, (JavaList <DynamicProperty>)container.GetTag(INTERNAL_TAG_ID), parent, ids);
            }

            /* clear tag from properties */
            container.Tag = (INTERNAL_TAG_ID);

            if (holderClass != null)
            {
                try
                {
                    object holder = holderClass.Assembly.CreateInstance(holderClass.FullName);//.GetConstructor().NewInstance();
                    DynamicHelper.parseDynamicView(holder, container, ids);
                    container.Tag = (Java.Lang.Object)(holder);
                }
                catch (InstantiationException e)
                {
                    e.PrintStackTrace();
                }
                catch (IllegalAccessException e)
                {
                    e.PrintStackTrace();
                }
                catch (NoSuchMethodException e)
                {
                    e.PrintStackTrace();
                }
                catch (InvocationTargetException e)
                {
                    e.PrintStackTrace();
                }
            }

            return(container);
        }