package com.way.apapter; import java.util.Arrays; import java.util.List; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.SectionIndexer; import android.widget.TextView; import com.way.bean.City; import com.way.plistview.PinnedHeaderListView; import com.way.plistview.PinnedHeaderListView.PinnedHeaderAdapter; import com.way.weather.R; public class CityAdapter extends BaseAdapter implements SectionIndexer, PinnedHeaderAdapter, OnScrollListener { // 首字母集 private List<City> mCities; private Map<String, List<City>> mMap; private List<String> mSections; private List<Integer> mPositions; private LayoutInflater inflater; public CityAdapter(Context context, List<City> cities, Map<String, List<City>> map, List<String> sections, List<Integer> positions) { // TODO Auto-generated constructor stub inflater = LayoutInflater.from(context); mCities = cities; mMap = map; mSections = sections; mPositions = positions; } @Override public int getCount() { // TODO Auto-generated method stub return mCities.size(); } @Override public City getItem(int position) { // TODO Auto-generated method stub int section = getSectionForPosition(position); return mMap.get(mSections.get(section)).get( position - getPositionForSection(section)); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub int section = getSectionForPosition(position); if (convertView == null) { convertView = inflater.inflate(R.layout.select_city_item, null); } TextView group = (TextView) convertView.findViewById(R.id.group_title); TextView city = (TextView) convertView.findViewById(R.id.column_title); if (getPositionForSection(section) == position) { group.setVisibility(View.VISIBLE); group.setText(mSections.get(section)); } else { group.setVisibility(View.GONE); } City item = mMap.get(mSections.get(section)).get( position - getPositionForSection(section)); city.setText(item.getCity()); return convertView; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub if (view instanceof PinnedHeaderListView) { ((PinnedHeaderListView) view).configureHeaderView(firstVisibleItem); } } @Override public int getPinnedHeaderState(int position) { int realPosition = position; if (realPosition < 0 || position >= getCount()) { return PINNED_HEADER_GONE; } int section = getSectionForPosition(realPosition); int nextSectionPosition = getPositionForSection(section + 1); if (nextSectionPosition != -1 && realPosition == nextSectionPosition - 1) { return PINNED_HEADER_PUSHED_UP; } return PINNED_HEADER_VISIBLE; } @Override public void configurePinnedHeader(View header, int position, int alpha) { // TODO Auto-generated method stub int realPosition = position; int section = getSectionForPosition(realPosition); String title = (String) getSections()[section]; ((TextView) header.findViewById(R.id.group_title)).setText(title); } @Override public Object[] getSections() { // TODO Auto-generated method stub return mSections.toArray(); } @Override public int getPositionForSection(int section) { // TODO Auto-generated method stub if (section < 0 || section >= mPositions.size()) { return -1; } return mPositions.get(section); } @Override public int getSectionForPosition(int position) { if (position < 0 || position >= getCount()) { return -1; } int index = Arrays.binarySearch(mPositions.toArray(), position); return index >= 0 ? index : -index - 2; } }
最近下载更多
dingruiasdad LV3
2023年4月11日
xsjxsj LV2
2022年12月13日
慵懒 LV4
2022年6月22日
上邪(ye) LV6
2022年6月19日
wanfeng_233 LV4
2022年6月13日
双方各何必呢 LV13
2022年6月12日
nihao123456 LV6
2022年5月1日
wjl0529 LV3
2022年4月12日
GZW012345 LV8
2022年3月21日
13165798872 LV11
2022年3月7日
最近浏览更多
17693282606 LV12
6月20日
咩咩咩咩咩 LV2
6月17日
pangzhihui LV14
5月28日
1941549176 LV4
5月9日
heweimin LV13
4月15日
微信网友_6522007290040320 LV2
4月15日
syd1988 LV7
3月7日
微信网友_6801903754432512
2023年12月31日
暂无贡献等级
zwj1234 LV1
2023年12月11日
cch16257 LV1
2023年11月27日