AUPinnedSectionListView 提供分组的 ListView,在滑动中固定每个分组的标题。
说明
若要使用此控件,数据模型需区分 type,若不区分,则是普通的 ListView。
效果图
代码示例
public class PinnedSectionActivity extends Activity{
private AUPullRefreshView pullRefreshView;
AUPullLoadingView mAUPullLoadingView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pinned_layout);
pullRefreshView = (AUPullRefreshView) findViewById(R.id.pull_refresh);
final AUPinnedSectionListView pinnedSectionListView = (AUPinnedSectionListView) findViewById(R.id.list_view);
TextView tv = new TextView(this);
tv.setText("nihao");
pinnedSectionListView.addHeaderView(tv);
pullRefreshView.setRefreshListener(new AUPullRefreshView.RefreshListener() {
@Override
public void onRefresh() {
pullRefreshView.autoRefresh();
pullRefreshView.postDelayed(new Runnable() {
@Override
public void run() {
pullRefreshView.refreshFinished();
}
}, 1000);
}
@Override
public AUPullLoadingView getOverView() {
mAUPullLoadingView = (AUPullLoadingView) LayoutInflater.from(getBaseContext())
.inflate(com.alipay.mobile.antui.R.layout.au_framework_pullrefresh_overview, null);
Date date = new Date(1466577757265L);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(date);
mAUPullLoadingView.setIndicatorText(dateString);
mAUPullLoadingView.setLoadingText(dateString);
return mAUPullLoadingView;
}
@Override
public boolean canRefresh() {
return true;
}
});
final SimpleAdapter adapter = new SimpleAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1);
pinnedSectionListView.setAdapter(adapter);
pinnedSectionListView.onFinishLoading(true);
pinnedSectionListView.setOnLoadMoreListener(new AUPinnedSectionListView.OnLoadMoreListener() {
@Override
public void onLoadMoreItems() {
pinnedSectionListView.postDelayed(new Runnable() {
@Override
public void run() {
pinnedSectionListView.onFinishLoading(false);
}
}, 3000);
}
});
}
static class SimpleAdapter extends ArrayAdapter<Item> implements AUPinnedSectionListView.PinnedSectionListAdapter {
public SimpleAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
generateDataset('A', 'Z', false);
}
public void generateDataset(char from, char to, boolean clear) {
if (clear) clear();
final int sectionsNumber = to - from + 1;
prepareSections(sectionsNumber);
int sectionPosition = 0, listPosition = 0;
for (char i=0; i<sectionsNumber; i++) {
Item section = new Item(Item.SECTION, String.valueOf((char)('A' + i)));
section.sectionPosition = sectionPosition;
section.listPosition = listPosition++;
onSectionAdded(section, sectionPosition);
add(section);
final int itemsNumber = (int) Math.abs((Math.cos(2f*Math.PI/3f * sectionsNumber / (i+1f)) * 25f));
for (int j=0;j<itemsNumber;j++) {
Item item = new Item(Item.ITEM, section.text.toUpperCase(Locale.ENGLISH) + " - " + j);
item.sectionPosition = sectionPosition;
item.listPosition = listPosition++;
add(item);
}
sectionPosition++;
}
}
protected void prepareSections(int sectionsNumber) { }
protected void onSectionAdded(Item section, int sectionPosition) { }
@Override public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setTextColor(Color.DKGRAY);
view.setTag("" + position);
Item item = getItem(position);
if (item.type == Item.SECTION) {
//view.setOnClickListener(PinnedSectionListActivity.this);
view.setBackgroundColor(Color.parseColor("#ff0000"));
}
return view;
}
@Override public int getViewTypeCount() {
return 2;
}
@Override public int getItemViewType(int position) {
return getItem(position).type;
}
@Override
public boolean isItemViewTypePinned(int viewType) {
return viewType == Item.SECTION;
}
}
static class Item {
public static final int ITEM = 0;
public static final int SECTION = 1;
public final int type;
public final String text;
public int sectionPosition;
public int listPosition;
public Item(int type, String text) {
this.type = type;
this.text = text;
}
@Override public String toString() {
return text;
}
}
}
文档内容是否对您有帮助?