@Nullable @Override public View findViewById(@NonNull String id) { return view.findViewById(context.getInflater().getUniqueViewId(id)); }
@NonNull public ProteusLayoutInflater getInflater() { return getInflater(new SimpleIdGenerator()); }
@NonNull @Override public ProteusView createView(@NonNull ProteusContext context, @NonNull Layout include, @NonNull ObjectValue data, @Nullable ViewGroup parent, int dataIndex) { if (include.extras == null) { throw new IllegalArgumentException("required attribute 'layout' missing."); } Value type = include.extras.get(ProteusConstants.LAYOUT); if (null == type || !type.isPrimitive()) { throw new ProteusInflateException("required attribute 'layout' missing or is not a string"); } Layout layout = context.getLayout(type.getAsString()); if (null == layout) { throw new ProteusInflateException("Layout '" + type + "' not found"); } return context.getInflater().inflate(layout.merge(include), data, parent, dataIndex); }
@NonNull @Override public SimpleListAdapter create(@NonNull ProteusRecyclerView view, @NonNull ObjectValue config) { Layout layout = config.getAsObject().getAsLayout(ATTRIBUTE_ITEM_LAYOUT); Integer count = config.getAsObject().getAsInteger(ATTRIBUTE_ITEM_COUNT); ObjectValue data = view.getViewManager().getDataContext().getData(); ProteusContext context = (ProteusContext) view.getContext(); return new SimpleListAdapter(context.getInflater(), data, layout, count != null ? count : 0); } };
@Override public void setString(V view, String value) { if (view instanceof ProteusView) { int id = ((ProteusView) view).getViewManager().getContext().getInflater().getUniqueViewId(value); ParseHelper.addRelativeLayoutRule(view, rule, id); } } };
@Override public void setString(V view, String value) { ProteusView.Manager viewManager = ((ProteusView) view).getViewManager(); ProteusContext context = viewManager.getContext(); Layout layout = viewManager.getLayout(); ViewTypeParser handler = context.getInflater().getParser(layout.type); String[] styleSet = value.split(ProteusConstants.STYLE_DELIMITER); for (String styleName : styleSet) { Map<String, Value> style = context.getStyle(styleName); if (null != style) { process(context.getStyle(styleName), (ProteusView) view, (handler != null ? handler : ViewParser.this)); } } }
@Override public void setString(final V view, String value) { if (view instanceof ProteusView) { view.setId(((ProteusView) view).getViewManager().getContext().getInflater().getUniqueViewId(value));
@Override public boolean handleChildren(T view, Value children) { ProteusView proteusView = ((ProteusView) view); ProteusView.Manager viewManager = proteusView.getViewManager(); ProteusLayoutInflater layoutInflater = viewManager.getContext().getInflater(); ObjectValue data = viewManager.getDataContext().getData(); int dataIndex = viewManager.getDataContext().getIndex(); if (children.isArray()) { ProteusView child; Iterator<Value> iterator = children.getAsArray().iterator(); Value element; while (iterator.hasNext()) { element = iterator.next(); if (!element.isLayout()) { throw new ProteusInflateException("attribute 'children' must be an array of 'Layout' objects"); } child = layoutInflater.inflate(element.getAsLayout(), data, view, dataIndex); addView(proteusView, child); } } return true; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_proteus); // set the toolbar Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // setBoolean refresh button click FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { alert(); } }); container = findViewById(R.id.content_main); DemoApplication application = (DemoApplication) getApplication(); proteusManager = application.getProteusManager(); ProteusContext context = proteusManager.getProteus().createContextBuilder(this) .setLayoutManager(layoutManager) .setCallback(callback) .setImageLoader(loader) .setStyleManager(styleManager) .build(); layoutInflater = context.getInflater(); }
int count = view.getChildCount(); ObjectValue data = dataContext.getData(); ProteusLayoutInflater inflater = manager.getContext().getInflater(); ProteusView child; View temp;