Java源码示例:com.heaven7.adapter.ISelectable

示例1
/**
 * check the refer and mapping the all find the refer VariableInfos in bindAdapter element.
 * @param id the id of adapter view
 * @param extras  the extra data
 * @param info  the AdapterInfo info,can be null ,if not need check refer.
 * @param <T>  the bean
 */
private <T extends ISelectable> void mapAdapterExtraData(int id, Object[] extras,AdapterInfo info) {
    if(info == null) {
        info = mAdapterParser.mOtherInfoMap.get(id);
    }
    if( info.getOtherRefers()!=null && info.getOtherRefers().length > 0) {
        getReferVariableInfos(info.getOtherRefers(),extras, mTmpVariables);

        final Array<VariableInfo> variables = this.mTmpVariables;
        if(variables.size >0) {
            final IDataResolver mDataResolver = this.mDataResolver;
            VariableInfo info1;
            for (int i = 0, size = variables.size; i < size; i++) {
                info1 = variables.get(i);
           /* if(sDebug){
                Logger.i(TAG, "checkReferAndMapping","mDataResolver.putObject ---- varName  = " +
                        info1.variableName);
            }*/
                mDataResolver.putLongStandingData(info1.variableName, info1.data);
            }
            variables.clear();
        }
    }
}
 
示例2
/***
 *  find the adapter info, and check refer ,
 * @param id  the adapter view id
 * @param data the data
 * @param extras the extra data ,often is bind to the listener
 * @return AdapterInfo
 * @throws DataBindException if find AdapterInfo ==null or main refer is wrong
 */
private <T extends ISelectable> AdapterInfo getAdapterInfo(int id, List<T> data,Object[] extras) throws DataBindException{
    AdapterInfo info = mAdapterParser.mOtherInfoMap.get(id);
    if( info == null){
        throw new DataBindException("have to declared the right <bindAdapter> element with the adapter view id = "+id);
    }
    final String mainRefer = mVariableBeanMap.get(data.get(0).getClass().getName());
    if (!info.mainRefer.equals(mainRefer)) {
        throw new DataBindException("the referVariable is mismatch, referVariable in <bindAdapter> is "
                + info.mainRefer + " ,but declared in <variable> is " + mainRefer);
    }
    if(info.getOtherRefers()!=null && info.getOtherRefers().length > 0) {
        if (extras == null || extras.length == 0)
            throw new DataBindException("the refers is mismatch with the extra data, because extra data is" +
                    " empty . but refers = " + Arrays.toString(info.getOtherRefers()));
    }
    return info;
}
 
示例3
@Override
public AdapterManager<? extends ISelectable> getAdapterManager(int adapterHash) {
    WeakReference<AdapterManager<? extends ISelectable>> ref = mAdapterManagerMap.get(adapterHash);
    if(ref != null){
        return ref.get();
    }
    return null;
}
 
示例4
@Override
public void onParseBindAdapterElements(List<BindAdapterElement> list) {
    if (list == null || list.size() == 0)
        return;
    final Context context = this.mWeakContext.get();
    final SparseArray<Array<DataBindParser.ItemBindInfo>> mItemBinds = this.mItemBinds;
    final SparseArray<DataBindParser.AdapterInfo> mReferMap = this.mOtherInfoMap;

    List<ItemElement> ies;
    Array<DataBindParser.ItemBindInfo> infos;

    DataBindParser.ItemBindInfo info;
    boolean oneItem;
    int adapterViewId;
    int selectMode;

    for (BindAdapterElement bae : list) {
        ies = bae.getItemElements();
        if (ies == null || ies.size() == 0)
            continue;
        infos = new Array<>(3);
        oneItem = ies.size() == 1;

        adapterViewId = ResourceUtil.getResId(context, bae.getId(), ResourceUtil.ResourceType.Id);

        try {
            selectMode = Integer.parseInt(bae.getSelectMode());
            if (selectMode != ISelectable.SELECT_MODE_SINGLE && selectMode != ISelectable.SELECT_MODE_MULTI) {
                throw new DataBindException("the value of selectMode can only be ISelectable.SELECT_MODE_SINGLE" +
                        " or ISelectable.SELECT_MODE_MULTI , please check the value of selectMode " +
                        "in <bindAdapter> element");
            }
        } catch (NumberFormatException e) {
            throw new DataBindException("the value of selectMode can only be ISelectable.SELECT_MODE_SINGLE" +
                    " or ISelectable.SELECT_MODE_MULTI , please check the value of selectMode " +
                    "in <bindAdapter> element");
        }

        mReferMap.put(adapterViewId, new DataBindParser.AdapterInfo(bae.getReferVariable(),
                bae.getTotalRefers(), selectMode));
        mItemBinds.put(adapterViewId, infos);

        for (ItemElement ie : ies) {
            info = new DataBindParser.ItemBindInfo();
            info.layoutId = ResourceUtil.getResId(context, ie.getLayoutName(), ResourceUtil.ResourceType.Layout);
            //in multi item ,index must be declared
            if (!oneItem)
                info.tag = Integer.parseInt(ie.getTag().trim());
            info.itemEvents = parseListItemEventPropertyInfos(ie.getPropertyElements());
            info.itemBinds = parseListItemBindInfos(context, ie.getBindElements());
            infos.add(info);
        }

    }
}
 
示例5
@Override
public void putAdapterManager(int adapterHash, AdapterManager<? extends ISelectable> am) {
    if(mAdapterManagerMap == null)
        mAdapterManagerMap = new SparseArray<>(3);
    mAdapterManagerMap.put(adapterHash, new WeakReference<AdapterManager<? extends ISelectable>>(am));
}
 
示例6
@Override
public void endBind() {
    this.mPosition = ISelectable.INVALID_POSITION;
    this.mItem = null;
}
 
示例7
@Override
public <T extends ISelectable> AdapterManager<T> bindAdapter(int id, List<T> data,Object...extras) {
    return  mDataBindParser.bindAdapter(id,data,extras);
}
 
示例8
/**
 * bind adapter and return the AdapterManager ( can manage adapter) .
 * @param adapterViewId  the id of adapter view ,eg: ListView or RecyclerView
 * @param data  the list data to bind
 * @param extras the extras objects.often is the relative listener to bind
 * @param <T> the T
 * @return AdapterManager to manage the adapter
 */
<T extends ISelectable> AdapterManager<T> bindAdapter(int adapterViewId, List<T> data,Object...extras);
 
示例9
AdapterManager<? extends ISelectable> getAdapterManager(int adapterHash); 
示例10
void putAdapterManager(int adapterHash,AdapterManager< ? extends ISelectable> am);