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
2024年6月20日
咩咩咩咩咩 LV2
2024年6月17日
pangzhihui LV14
2024年5月28日
1941549176 LV4
2024年5月9日
heweimin LV13
2024年4月15日
微信网友_6522007290040320 LV2
2024年4月15日
syd1988 LV7
2024年3月7日
微信网友_6801903754432512
2023年12月31日
暂无贡献等级
zwj1234 LV1
2023年12月11日
cch16257 LV1
2023年11月27日

