package com.duguang.baseanimation.ui.customview.titlelistview; import java.util.ArrayList; 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.TextView; import com.duguang.baseanimation.R; import com.duguang.baseanimation.ui.customview.titlelistview.PinnedHeaderListView.PinnedHeaderAdapter; public class TestAdapter extends BaseAdapter implements PinnedHeaderAdapter, OnScrollListener { private LayoutInflater inflater; private ArrayList<Person> datas; private int lastItem = 0; public TestAdapter(final LayoutInflater inflater) { this.inflater = inflater; loadData(); } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = inflater.inflate(R.layout.activity_custom_title_listview_section_item, null); } final Person person = datas.get(position); final TextView header = (TextView) view.findViewById(R.id.header); final TextView textView = (TextView) view .findViewById(R.id.example_text_view); textView.setText(person.getNumber()); header.setText(person.getName()); if (lastItem == position) { header.setVisibility(View.INVISIBLE); } else { header.setVisibility(View.VISIBLE); } return view; } @Override public int getPinnedHeaderState(int position) { return PINNED_HEADER_PUSHED_UP; } @Override public void configurePinnedHeader(View header, int position) { if (lastItem != position) { notifyDataSetChanged(); } ((TextView) header.findViewById(R.id.header_text)).setText(datas.get( position).getName()); lastItem = position; } private void loadData() { datas = new ArrayList<Person>(); for (int i = 0; i < 50; i++) { Person p = new Person(); p.setName("name-" + i); p.setNumber("100" + i); datas.add(p); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (view instanceof PinnedHeaderListView) { ((PinnedHeaderListView) view).configureHeaderView(firstVisibleItem); } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } }