分组列表,tabs滑动固定框架-stickylistheaders

来源:互联网 发布:用户行为分析python 编辑:程序博客网 时间:2024/06/10 07:24

demo演示:


github地址:https://github.com/emilsjolander/StickyListHeaders

添加依赖:

compile 'se.emilsjolander:stickylistheaders:2.7.0'

布局:

<se.emilsjolander.stickylistheaders.StickyListHeadersListView    android:id="@+id/shlv"    android:layout_width="match_parent"    android:layout_height="match_parent"></se.emilsjolander.stickylistheaders.StickyListHeadersListView>

代码:

-找到stickylistheaders控件

-添加适配器:

public class StickyListHeadersActivity extends Activity {    @InjectView(R.id.shlv)    StickyListHeadersListView shlv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sticky_header);        ButterKnife.inject(this);        MyStickyListHeadersAdapter adapter = new MyStickyListHeadersAdapter();        shlv.setAdapter((StickyListHeadersAdapter) adapter);    }    /**     * 适配器     * 小技巧:直接实现StickyListHeadersAdapter需要实现很多方法     * 但是extends BaseAdapter implements StickyListHeadersAdapter就少些很多方法     */    class MyStickyListHeadersAdapter extends BaseAdapter implements StickyListHeadersAdapter {        private long groupOne = 1;//第一组        private long groupTwo = 2;//第二组        //返回元素个数,标题不算是元素        @Override        public int getCount() {            return 40;        }        @Override        public Object getItem(int i) {            return null;        }        @Override        public long getItemId(int i) {            return 0;        }        //listview布局        @Override        public View getView(int position, View convertView, ViewGroup parent) {            View view = null;            ViewHolder holder = null;            if (convertView == null) {                view = View.inflate(parent.getContext(), R.layout.item_goods, null);                holder = new ViewHolder(view);                view.setTag(holder);            } else {                view = convertView;                holder = (ViewHolder) view.getTag();            }            holder.tvTitle.setText("商品" + position);            return view;        }        //标题布局        @Override        public View getHeaderView(int position, View convertView, ViewGroup parent) {            return View.inflate(parent.getContext(), R.layout.item_outteradapter, null);        }        //返回的id有几个就产生几个分组,每个分组都会生成一个标题布局getHeaderView()        @Override        public long getHeaderId(int position) {            //前15个元素为一组,后面的全部元素为一组            if (position <= 15) {                return groupOne;            } else {                return groupTwo;            }        }        class ViewHolder {            @InjectView(R.id.tv_title)            TextView tvTitle;            ViewHolder(View view) {                ButterKnife.inject(this, view);            }        }    }}



1 0
原创粉丝点击