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);