/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ide.common.rendering.api; import com.android.resources.ResourceType; import com.android.util.Pair; /** * Callback for project information needed by the Layout Library. * Classes implementing this interface provide methods giving access to some project data, like * resource resolution, namespace information, and instantiation of custom view. */ public interface IProjectCallback { /** * Loads a custom view with the given constructor signature and arguments. * @param name The fully qualified name of the class. * @param constructorSignature The signature of the class to use * @param constructorArgs The arguments to use on the constructor * @return A newly instantiated android.view.View object. * @throws ClassNotFoundException * @throws Exception */ @SuppressWarnings("unchecked") Object loadView(String name, Class[] constructorSignature, Object[] constructorArgs) throws ClassNotFoundException, Exception; /** * Returns the namespace of the application. *
This lets the Layout Lib load custom attributes for custom views. */ String getNamespace(); /** * Resolves the id of a resource Id. * The resource id is the value of aR.<type>.<name>
, and
* this method will return both the type and name of the resource.
* @param id the Id to resolve.
* @return a Pair of {@link ResourceType} and resource name, or null if the id
* does not match any resource.
*/
Pairnull
if not found.
*/
String resolveResourceId(int[] id);
/**
* Returns the id of a resource.
* The provided type and name must match an existing constant defined as
* R.<type>.<name>
.
* @param type the type of the resource
* @param name the name of the resource
* @return an Integer containing the resource Id, or null
if not found.
*/
Integer getResourceId(ResourceType type, String name);
/**
* Returns the value of an item used by an adapter.
* @param adapterView The {@link ResourceReference} for the adapter view info.
* @param itemRef the {@link ResourceReference} for the layout used by the adapter item.
* @param fullPosition the position of the item in the full list.
* @param typePosition the position of the item if only items of the same type are considered.
* If there is only one type of items, this is the same as position.
* @param viewRef The {@link ResourceReference} for the view we're trying to fill.
* @param viewClass the class name of the view we're trying to fill.
* @return the item value or null if there's no value.
*/
String getAdapterItemValue(ResourceReference adapterView, ResourceReference itemRef,
int fullPosition, int typePosition,
ResourceReference viewRef, String viewClass);
}