类android.widget.SectionIndexer源码实例Demo

下面列出了怎么用android.widget.SectionIndexer的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: BLE   文件: MergeAdapter.java
public int getSectionForPosition(int position) {
    int section = 0;

    int size;
    for (Iterator i$ = this.getPieces().iterator(); i$.hasNext(); position -= size) {
        ListAdapter piece = (ListAdapter) i$.next();
        size = piece.getCount();
        if (position < size) {
            if (piece instanceof SectionIndexer) {
                return section + ((SectionIndexer) piece).getSectionForPosition(position);
            }

            return 0;
        }

        if (piece instanceof SectionIndexer) {
            Object[] sections = ((SectionIndexer) piece).getSections();
            if (sections != null) {
                section += sections.length;
            }
        }
    }

    return 0;
}
 
源代码2 项目: BLE   文件: MergeAdapter.java
public Object[] getSections() {
    ArrayList sections = new ArrayList();
    Iterator i$ = this.getPieces().iterator();

    while (i$.hasNext()) {
        ListAdapter piece = (ListAdapter) i$.next();
        if (piece instanceof SectionIndexer) {
            Object[] curSections = ((SectionIndexer) piece).getSections();
            if (curSections != null) {
                Collections.addAll(sections, curSections);
            }
        }
    }

    if (sections.size() == 0) {
        return new String[0];
    } else {
        return sections.toArray(new Object[sections.size()]);
    }
}
 
源代码3 项目: AndroidWeekly   文件: PinnedSectionListView.java
int findCurrentSectionPosition(int fromPosition) {
    ListAdapter adapter = getAdapter();

    if (fromPosition >= adapter.getCount()) return -1; // dataset has changed, no candidate

    if (adapter instanceof SectionIndexer) {
        // try fast way by asking section indexer
        SectionIndexer indexer = (SectionIndexer) adapter;
        int sectionPosition = indexer.getSectionForPosition(fromPosition);
        int itemPosition = indexer.getPositionForSection(sectionPosition);
        int typeView = adapter.getItemViewType(itemPosition);
        if (isItemViewTypePinned(adapter, typeView)) {
            return itemPosition;
        } // else, no luck
    }

    // try slow way by looking through to the next section item above
    for (int position = fromPosition; position >= 0; position--) {
        int viewType = adapter.getItemViewType(position);
        if (isItemViewTypePinned(adapter, viewType)) return position;
    }
    return -1; // no candidate found
}
 
源代码4 项目: Yahala-Messenger   文件: PinnedSectionListView.java
int findCurrentSectionPosition(int fromPosition) {
    ListAdapter adapter = getAdapter();

    if (adapter instanceof SectionIndexer) {
        // try fast way by asking section indexer
        SectionIndexer indexer = (SectionIndexer) adapter;
        int sectionPosition = indexer.getSectionForPosition(fromPosition);
        int itemPosition = indexer.getPositionForSection(sectionPosition);
        int typeView = adapter.getItemViewType(itemPosition);
        if (isItemViewTypePinned(adapter, typeView)) {
            return itemPosition;
        } // else, no luck
    }

    // try slow way by looking through to the next section item above
    for (int position = fromPosition; position >= 0; position--) {
        int viewType = adapter.getItemViewType(position);
        if (isItemViewTypePinned(adapter, viewType)) return position;
    }
    return -1; // no candidate found
}
 
int findCurrentSectionPosition(int fromPosition) {
    ListAdapter adapter = getAdapter();

    if (adapter instanceof SectionIndexer) {
        // try fast way by asking section indexer
        SectionIndexer indexer = (SectionIndexer) adapter;
        int sectionPosition = indexer.getSectionForPosition(fromPosition);
        int itemPosition = indexer.getPositionForSection(sectionPosition);
        int typeView = adapter.getItemViewType(itemPosition);
        if (isItemViewTypePinned(adapter, typeView)) {
            return itemPosition;
        } // else, no luck
    }

    // try slow way by looking through to the next section item above
    for (int position = fromPosition; position >= 0; position--) {
        int viewType = adapter.getItemViewType(position);
        if (isItemViewTypePinned(adapter, viewType)) return position;
    }
    return -1; // no candidate found
}
 
源代码6 项目: AndroidBleManager   文件: MergeAdapter.java
@Override
public int getPositionForSection(int section) {
    int position=0;

    for (ListAdapter piece : getPieces()) {
        if (piece instanceof SectionIndexer) {
            Object[] sections=((SectionIndexer)piece).getSections();
            int numSections=0;

            if (sections != null) {
                numSections=sections.length;
            }

            if (section < numSections) {
                return(position + ((SectionIndexer)piece).getPositionForSection(section));
            }
            else if (sections != null) {
                section-=numSections;
            }
        }

        position+=piece.getCount();
    }

    return(0);
}
 
源代码7 项目: AndroidBleManager   文件: MergeAdapter.java
@Override
public Object[] getSections() {
    ArrayList<Object> sections=new ArrayList<Object>();

    for (ListAdapter piece : getPieces()) {
        if (piece instanceof SectionIndexer) {
            Object[] curSections=((SectionIndexer)piece).getSections();

            if (curSections != null) {
                Collections.addAll(sections, curSections);
            }
        }
    }

    if (sections.size() == 0) {
        return(new String[0]);
    }

    return(sections.toArray(new Object[0]));
}
 
源代码8 项目: Contacts   文件: PinnedSectionListView.java
int findCurrentSectionPosition(int fromPosition) {
	ListAdapter adapter = getAdapter();

	if (adapter instanceof SectionIndexer) {
		// try fast way by asking section indexer
		SectionIndexer indexer = (SectionIndexer) adapter;
		int sectionPosition = indexer.getSectionForPosition(fromPosition);
		int itemPosition = indexer.getPositionForSection(sectionPosition);
		int typeView = adapter.getItemViewType(itemPosition);
		if (isItemViewTypePinned(adapter, typeView)) {
			return itemPosition;
		} // else, no luck
	}

	// try slow way by looking through to the next section item above
	for (int position=fromPosition; position>=0; position--) {
		int viewType = adapter.getItemViewType(position);
		if (isItemViewTypePinned(adapter, viewType)) return position;
	}
	return -1; // no candidate found
}
 
int findCurrentSectionPosition(int fromPosition) {
	ListAdapter adapter = getAdapter();

	if (adapter instanceof SectionIndexer) {
		// try fast way by asking section indexer
		SectionIndexer indexer = (SectionIndexer) adapter;
		int sectionPosition = indexer.getSectionForPosition(fromPosition);
		int itemPosition = indexer.getPositionForSection(sectionPosition);
		int typeView = adapter.getItemViewType(itemPosition);
		if (isItemViewTypePinned(adapter, typeView)) {
			return itemPosition;
		} // else, no luck
	}

	// try slow way by looking through to the next section item above
	for (int position=fromPosition; position>=0; position--) {
		int viewType = adapter.getItemViewType(position);
		if (isItemViewTypePinned(adapter, viewType)) return position;
	}
	return -1; // no candidate found
}
 
源代码10 项目: mimicry   文件: MergeAdapter.java
public final int getPositionForSection(int section) {
	int position = 0;

	for (ListAdapter piece : pieces) {
		if (piece instanceof SectionIndexer) {
			Object[] sections = ((SectionIndexer) piece).getSections();
			int numSections = 0;

			if (sections != null) {
				numSections = sections.length;
			}

			if (section < numSections) {
				return (position + ((SectionIndexer) piece).getPositionForSection(section));
			} else if (sections != null) {
				section -= numSections;
			}
		}

		position += piece.getCount();
	}

	return (0);
}
 
源代码11 项目: mimicry   文件: MergeAdapter.java
public final Object[] getSections() {
	ArrayList<Object> sections = new ArrayList<Object>();

	for (ListAdapter piece : pieces) {
		if (piece instanceof SectionIndexer) {
			Object[] curSections = ((SectionIndexer) piece).getSections();

			if (curSections != null) {
				for (Object section : curSections) {
					sections.add(section);
				}
			}
		}
	}

	if (sections.size() == 0) {
		return (null);
	}

	return (sections.toArray(new Object[0]));
}
 
int findCurrentSectionPosition(int fromPosition) {
	ListAdapter adapter = getAdapter();

	if (adapter instanceof SectionIndexer) {
		// try fast way by asking section indexer
		SectionIndexer indexer = (SectionIndexer) adapter;
		int sectionPosition = indexer.getSectionForPosition(fromPosition);
		int itemPosition = indexer.getPositionForSection(sectionPosition);
		int typeView = adapter.getItemViewType(itemPosition);
		if (isItemViewTypePinned(adapter, typeView)) {
			return itemPosition;
		} // else, no luck
	}

	// try slow way by looking through to the next section item above
	for (int position=fromPosition; position>=0; position--) {
		int viewType = adapter.getItemViewType(position);
		if (isItemViewTypePinned(adapter, viewType)) return position;
	}
	return -1; // no candidate found
}
 
源代码13 项目: SimpleExplorer   文件: MergeAdapter.java
public int getPositionForSection(int section) {
    int position = 0;

    for (ListAdapter piece : pieces) {
        if (piece instanceof SectionIndexer) {
            Object[] sections = ((SectionIndexer) piece).getSections();
            int numSections = 0;

            if (sections != null) {
                numSections = sections.length;
            }

            if (section < numSections) {
                return (position + ((SectionIndexer) piece)
                        .getPositionForSection(section));
            } else if (sections != null) {
                section -= numSections;
            }
        }

        position += piece.getCount();
    }

    return 0;
}
 
源代码14 项目: SimpleExplorer   文件: MergeAdapter.java
public Object[] getSections() {
    ArrayList<Object> sections = new ArrayList<>();

    for (ListAdapter piece : pieces) {
        if (piece instanceof SectionIndexer) {
            Object[] curSections = ((SectionIndexer) piece).getSections();

            if (curSections != null) {
                Collections.addAll(sections, curSections);
            }
        }
    }

    if (sections.isEmpty()) {
        return null;
    }

    return sections.toArray(new Object[sections.size()]);
}
 
源代码15 项目: Kernel-Tuner   文件: PinnedSectionListView.java
int findCurrentSectionPosition(int fromPosition) {
	ListAdapter adapter = getAdapter();

	if (adapter instanceof SectionIndexer) {
		// try fast way by asking section indexer
		SectionIndexer indexer = (SectionIndexer) adapter;
		int sectionPosition = indexer.getSectionForPosition(fromPosition);
		int itemPosition = indexer.getPositionForSection(sectionPosition);
		int typeView = adapter.getItemViewType(itemPosition);
		if (isItemViewTypePinned(adapter, typeView)) {
			return itemPosition;
		} // else, no luck
	}

	// try slow way by looking through to the next section item above
	for (int position=fromPosition; position>=0; position--) {
		int viewType = adapter.getItemViewType(position);
		if (isItemViewTypePinned(adapter, viewType)) return position;
	}
	return -1; // no candidate found
}
 
源代码16 项目: FimiX8-RE   文件: StickyListHeadersListView.java
private AdapterWrapper wrapAdapter(ListAdapter adapter) {
    AdapterWrapper wrapper;
    if (adapter instanceof SectionIndexer) {
        wrapper = new SectionIndexerAdapterWrapper(getContext(), (StickyListHeadersAdapter) adapter);
    } else {
        wrapper = new AdapterWrapper(getContext(), (StickyListHeadersAdapter) adapter);
    }
    wrapper.setDivider(this.mDivider);
    wrapper.setDividerHeight(this.mDividerHeight);
    wrapper.registerDataSetObserver(this.mDataSetChangedObserver);
    wrapper.setOnHeaderClickListener(this.mAdapterHeaderClickListener);
    return wrapper;
}
 
源代码17 项目: Swface   文件: StickyListHeadersListView.java
public void setAdapter(StickyListHeadersAdapter adapter) {
    if (adapter == null) {
        if (mAdapter instanceof SectionIndexerAdapterWrapper) {
            ((SectionIndexerAdapterWrapper) mAdapter).mSectionIndexerDelegate = null;
        }
        if (mAdapter != null) {
            mAdapter.mDelegate = null;
        }
        mList.setAdapter(null);
        clearHeader();
        return;
    }
    if (mAdapter != null) {
        mAdapter.unregisterDataSetObserver(mDataSetObserver);
    }

    if (adapter instanceof SectionIndexer) {
        mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter);
    } else {
        mAdapter = new AdapterWrapper(getContext(), adapter);
    }
    mDataSetObserver = new AdapterWrapperDataSetObserver();
    mAdapter.registerDataSetObserver(mDataSetObserver);

    if (mOnHeaderClickListener != null) {
        mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler());
    } else {
        mAdapter.setOnHeaderClickListener(null);
    }

    mAdapter.setDivider(mDivider, mDividerHeight);

    mList.setAdapter(mAdapter);
    clearHeader();
}
 
源代码18 项目: o2oa   文件: StickyListHeadersListView.java
public void setAdapter(StickyListHeadersAdapter adapter) {
    if (adapter == null) {
        if (mAdapter instanceof SectionIndexerAdapterWrapper) {
            ((SectionIndexerAdapterWrapper) mAdapter).mSectionIndexerDelegate = null;
        }
        if (mAdapter != null) {
            mAdapter.mDelegate = null;
        }
        mList.setAdapter(null);
        clearHeader();
        return;
    }
    if (mAdapter != null) {
        mAdapter.unregisterDataSetObserver(mDataSetObserver);
    }

    if (adapter instanceof SectionIndexer) {
        mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter);
    } else {
        mAdapter = new AdapterWrapper(getContext(), adapter);
    }
    mDataSetObserver = new AdapterWrapperDataSetObserver();
    mAdapter.registerDataSetObserver(mDataSetObserver);

    if (mOnHeaderClickListener != null) {
        mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler());
    } else {
        mAdapter.setOnHeaderClickListener(null);
    }

    mAdapter.setDivider(mDivider, mDividerHeight);

    mList.setAdapter(mAdapter);
    clearHeader();
}
 
public void setAdapter(RecyclerView.Adapter adapter) {
    if (adapter instanceof SectionIndexer) {
        adapter.registerAdapterDataObserver(this);
        mIndexer = (SectionIndexer) adapter;
        mSections = (String[]) mIndexer.getSections();
    }
}
 
public void setAdapter(StickyListHeadersAdapter adapter) {
    if (adapter == null) {
        if (mAdapter instanceof SectionIndexerAdapterWrapper) {
            ((SectionIndexerAdapterWrapper) mAdapter).mSectionIndexerDelegate = null;
        }
        if (mAdapter != null) {
            mAdapter.mDelegate = null;
        }
        mList.setAdapter(null);
        clearHeader();
        return;
    }
    if (mAdapter != null) {
        mAdapter.unregisterDataSetObserver(mDataSetObserver);
    }

    if (adapter instanceof SectionIndexer) {
        mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter);
    } else {
        mAdapter = new AdapterWrapper(getContext(), adapter);
    }
    mDataSetObserver = new AdapterWrapperDataSetObserver();
    mAdapter.registerDataSetObserver(mDataSetObserver);

    if (mOnHeaderClickListener != null) {
        mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler());
    } else {
        mAdapter.setOnHeaderClickListener(null);
    }

    mAdapter.setDivider(mDivider, mDividerHeight);

    mList.setAdapter(mAdapter);
    clearHeader();
}
 
源代码21 项目: HPlayer   文件: BaseAdapterDecorator.java
@Override
public int getPositionForSection(final int section) {
    if (mDecoratedBaseAdapter instanceof SectionIndexer) {
        return ((SectionIndexer) mDecoratedBaseAdapter).getPositionForSection(section);
    }
    return 0;
}
 
源代码22 项目: HPlayer   文件: BaseAdapterDecorator.java
@Override
public int getSectionForPosition(final int position) {
    if (mDecoratedBaseAdapter instanceof SectionIndexer) {
        return ((SectionIndexer) mDecoratedBaseAdapter).getSectionForPosition(position);
    }
    return 0;
}
 
源代码23 项目: HPlayer   文件: BaseAdapterDecorator.java
@Override
public Object[] getSections() {
    if (mDecoratedBaseAdapter instanceof SectionIndexer) {
        return ((SectionIndexer) mDecoratedBaseAdapter).getSections();
    }
    return null;
}
 
public void setAdapter(RecyclerView.Adapter adapter) {
    if (adapter instanceof SectionIndexer) {
        adapter.registerAdapterDataObserver(this);
        mIndexer = (SectionIndexer) adapter;
        mSections = (String[]) mIndexer.getSections();
    }
}
 
源代码25 项目: AndroidBleManager   文件: MergeAdapter.java
@Override
public int getSectionForPosition(int position) {
    int section=0;

    for (ListAdapter piece : getPieces()) {
        int size=piece.getCount();

        if (position < size) {
            if (piece instanceof SectionIndexer) {
                return(section + ((SectionIndexer)piece).getSectionForPosition(position));
            }

            return(0);
        }
        else {
            if (piece instanceof SectionIndexer) {
                Object[] sections=((SectionIndexer)piece).getSections();

                if (sections != null) {
                    section+=sections.length;
                }
            }
        }

        position-=size;
    }

    return(0);
}
 
源代码26 项目: KUAS-AP-Material   文件: PinnedSectionListView.java
int findCurrentSectionPosition(int fromPosition) {
	ListAdapter adapter = getAdapter();

	// dataset has changed, no candidate
	if (fromPosition >= adapter.getCount()) {
		return -1;
	}

	if (adapter instanceof SectionIndexer) {
		// try fast way by asking section indexer
		SectionIndexer indexer = (SectionIndexer) adapter;
		int sectionPosition = indexer.getSectionForPosition(fromPosition);
		int itemPosition = indexer.getPositionForSection(sectionPosition);
		int typeView = adapter.getItemViewType(itemPosition);
		if (isItemViewTypePinned(adapter, typeView)) {
			return itemPosition;
		} // else, no luck
	}

	// try slow way by looking through to the next section item above
	for (int position = fromPosition; position >= 0; position--) {
		int viewType = adapter.getItemViewType(position);
		if (isItemViewTypePinned(adapter, viewType)) {
			return position;
		}
	}
	// no candidate found
	return -1;
}
 
源代码27 项目: KUAS-AP-Material   文件: PinnedSectionListView.java
int findCurrentSectionPosition(int fromPosition) {
	ListAdapter adapter = getAdapter();

	// dataset has changed, no candidate
	if (fromPosition >= adapter.getCount()) {
		return -1;
	}

	if (adapter instanceof SectionIndexer) {
		// try fast way by asking section indexer
		SectionIndexer indexer = (SectionIndexer) adapter;
		int sectionPosition = indexer.getSectionForPosition(fromPosition);
		int itemPosition = indexer.getPositionForSection(sectionPosition);
		int typeView = adapter.getItemViewType(itemPosition);
		if (isItemViewTypePinned(adapter, typeView)) {
			return itemPosition;
		} // else, no luck
	}

	// try slow way by looking through to the next section item above
	for (int position = fromPosition; position >= 0; position--) {
		int viewType = adapter.getItemViewType(position);
		if (isItemViewTypePinned(adapter, viewType)) {
			return position;
		}
	}
	// no candidate found
	return -1;
}
 
源代码28 项目: ALLGO   文件: BaseAdapterDecorator.java
@Override
public int getPositionForSection(int section) {
	if (mDecoratedBaseAdapter instanceof SectionIndexer) {
		return ((SectionIndexer) mDecoratedBaseAdapter).getPositionForSection(section);
	}
	return 0;
}
 
源代码29 项目: ALLGO   文件: BaseAdapterDecorator.java
@Override
public int getSectionForPosition(int position) {
	if (mDecoratedBaseAdapter instanceof SectionIndexer) {
		return ((SectionIndexer) mDecoratedBaseAdapter).getSectionForPosition(position);
	}
	return 0;
}
 
源代码30 项目: ALLGO   文件: BaseAdapterDecorator.java
@Override
public Object[] getSections() {
	if (mDecoratedBaseAdapter instanceof SectionIndexer) {
		return ((SectionIndexer) mDecoratedBaseAdapter).getSections();
	}
	return null;
}
 
 类所在包
 同包方法