下面列出了android.widget.HeaderViewListAdapter#getWrappedAdapter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int rawPosition, long id) {
SectionedBaseAdapter adapter;
if (adapterView.getAdapter().getClass().equals(HeaderViewListAdapter.class)) {
HeaderViewListAdapter wrapperAdapter = (HeaderViewListAdapter) adapterView.getAdapter();
adapter = (SectionedBaseAdapter) wrapperAdapter.getWrappedAdapter();
} else {
adapter = (SectionedBaseAdapter) adapterView.getAdapter();
}
int section = adapter.getSectionForPosition(rawPosition);
int position = adapter.getPositionInSectionForPosition(rawPosition);
if (position == -1) {
onSectionClick(adapterView, view, section, id);
} else {
onItemClick(adapterView, view, section, position, id);
}
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int rawPosition, long id) {
SectionedBaseAdapter adapter;
if (adapterView.getAdapter() instanceof HeaderViewListAdapter) {
HeaderViewListAdapter wrapperAdapter = (HeaderViewListAdapter) adapterView.getAdapter();
adapter = (SectionedBaseAdapter) wrapperAdapter.getWrappedAdapter();
} else {
adapter = (SectionedBaseAdapter) adapterView.getAdapter();
}
int section = adapter.getSectionForPosition(rawPosition);
int position = adapter.getPositionInSectionForPosition(rawPosition);
if (position == -1) {
onSectionClick(adapterView, view, section, id);
} else {
onItemClick(adapterView, view, section, position, id);
}
}
private void setHeaderTextAndscroll(MotionEvent event){
if (mListView == null) {
//check the mListView to avoid NPE. but the mListView shouldn't be null
//need to check the call stack later
return;
}
String headerString = sections[sectionForPoint(event.getY())];
header.setText(headerString);
HeaderViewListAdapter ha = (HeaderViewListAdapter) mListView.getAdapter();
ContactAdapter adapter = (ContactAdapter) ha.getWrappedAdapter();
// ContactAdapter adapter = (ContactAdapter) mListView.getAdapter();
String[] adapterSections = (String[]) adapter.getSections();
try {
for (int i = adapterSections.length - 1; i > -1; i--) {
if(adapterSections[i].equals(headerString)){
mListView.setSelection(adapter.getPositionForSection(i));
break;
}
}
} catch (Exception e) {
Log.e("setHeaderTextAndscroll", e.getMessage());
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount)
{
if (firstVisibleItem < this.topVisibleItem - DISTANCE_TO_HIDE_ACTIONBAR)
{
setActionbarVisibility(true);
this.topVisibleItem = firstVisibleItem;
}
else if (firstVisibleItem > this.topVisibleItem + DISTANCE_TO_HIDE_ACTIONBAR)
{
setActionbarVisibility(false);
this.topVisibleItem = firstVisibleItem;
}
ListAdapter adapter = view.getAdapter();
if (adapter instanceof HeaderViewListAdapter)
{
HeaderViewListAdapter headerViewListAdapter = (HeaderViewListAdapter) adapter;
if (headerViewListAdapter.getWrappedAdapter() instanceof FileCardAdapter)
{
int startPrefetch = firstVisibleItem + visibleItemCount-headerViewListAdapter.getHeadersCount();
((FileCardAdapter) headerViewListAdapter.getWrappedAdapter()).prefetchImages(startPrefetch, visibleItemCount);
}
}
}
public static CacheAdapter<?> getCacheAdapter(Adapter adapter) {
if (adapter == null) {
return null;
}
CacheAdapter<?> cacheAdapter = null;
if (adapter instanceof CacheAdapter<?>) {
cacheAdapter = (CacheAdapter<?>)adapter;
} else if (adapter instanceof HeaderViewListAdapter) {
HeaderViewListAdapter headerViewAdapter = (HeaderViewListAdapter)adapter;
if (headerViewAdapter.getWrappedAdapter() instanceof CacheAdapter<?>) {
cacheAdapter = (CacheAdapter<?>)headerViewAdapter.getWrappedAdapter();
}
}
return cacheAdapter;
}
public static BaseListAdapter<?> getBaseListAdapter(Adapter adapter) {
if (adapter == null) {
return null;
}
BaseListAdapter<?> baseListAdapter = null;
if (adapter instanceof BaseListAdapter<?>) {
baseListAdapter = (BaseListAdapter<?>)adapter;
} else if (adapter instanceof HeaderViewListAdapter) {
HeaderViewListAdapter headerViewAdapter = (HeaderViewListAdapter)adapter;
if (headerViewAdapter.getWrappedAdapter() instanceof BaseListAdapter<?>) {
baseListAdapter = (BaseListAdapter<?>)headerViewAdapter.getWrappedAdapter();
}
}
return baseListAdapter;
}
private CacheAdapter<?> getCacheAdapter(ListAdapter adapter) {
CacheAdapter<?> cacheAdapter = null;
if (adapter instanceof CacheAdapter) {
cacheAdapter = (CacheAdapter<?>)adapter;
} else if (adapter instanceof HeaderViewListAdapter) {
HeaderViewListAdapter headerViewAdapter = (HeaderViewListAdapter)adapter;
if (headerViewAdapter.getWrappedAdapter() instanceof CacheAdapter<?>) {
cacheAdapter = (CacheAdapter<?>)headerViewAdapter.getWrappedAdapter();
}
}
return cacheAdapter;
}
static
void setTitlesAndDrawerAndPage(Fragment fragment, int absolutePos)
{
String[] navTitles = s_resources.getStringArray(R.array.navigation_titles);
if(null != fragment)
{
switchToFragment(fragment, false);
}
ListView list = s_fragmentDrawer.m_listView;
HeaderViewListAdapter headerAdapter = (HeaderViewListAdapter) list.getAdapter();
int headers = headerAdapter.getHeadersCount();
int listPosition = -10 == absolutePos ? s_viewPager.getCurrentItem() + headers : absolutePos;
int viewPagerPos = -10 == absolutePos ? s_viewPager.getCurrentItem() : absolutePos - headers;
// Check the drawer item.
String title = PagerAdapterTags.s_tagList.get(0);
String subTitle = null;
int imageRes = R.drawable.ic_action_labels;
if(s_fragmentFavourites.isVisible())
{
listPosition = 0;
title = navTitles[0];
imageRes = R.drawable.ic_action_important;
}
else if(s_fragmentManage.isVisible())
{
listPosition = 1;
title = navTitles[1];
imageRes = R.drawable.ic_action_storage;
}
else if(s_fragmentSettings.isVisible())
{
listPosition = 2;
title = navTitles[2];
imageRes = R.drawable.ic_action_settings;
}
else
{
ArrayAdapter<String[]> adapter = (ArrayAdapter<String[]>) headerAdapter.getWrappedAdapter();
if(null != adapter && 0 < adapter.getCount())
{
String[] item = adapter.getItem(viewPagerPos);
title = item[0];
int count = null == item[1] || item[1].isEmpty() ? 0 : Integer.parseInt(item[1]);
String countString = s_resources.getQuantityString(R.plurals.actionbar_subtitle_unread, count, count);
subTitle = 0 == count ? null : countString;
}
}
s_actionBar.setTitle(title);
s_actionBar.setSubtitle(subTitle);
s_actionBar.setIcon(imageRes);
list.setItemChecked(listPosition, true);
// If we must change the view pager page.
if(0 <= viewPagerPos)
{
// Switch the view pager page if different.
if(s_viewPager.getCurrentItem() != viewPagerPos)
{
s_viewPager.setCurrentItem(viewPagerPos);
}
}
}