LimitMoreView

来源:互联网 发布:网络对抗能力 编辑:程序博客网 时间:2024/05/22 21:15
项目地址:LimitMoreView
简介:Android 针对某些数据展示类似 ListView,但数据又不足一屏的情况,对数据进行封装,可通过 ViewType 设置不同类型,相比 ListView/RecyclerView 效率更高。

在开发中有的时候会遇到类似 ListView 列表显示,但是数据却只有几条,不足一屏的情况。 这个时候如果使用 ListView/RecyclerView,那么效率和性能都不好,LimitMoreView 提供了 与 RecyclerView 相似的 API

    complie 'cn.Lemon:limitmoreview:0.1.3'

使用

 mAdapter = new MyAdapter(); mLimitMoreView.setAdapter(mAdapter); mAdapter.addAll(getVirtualData());
  • 自定义 Adapter
class MyAdapter extends Adapter<String> {        public final int TYPE_ONE = 1;        public final int TYPE_TWO = 2;        public final int TYPE_THREE = 3;        @Override        public int getItemType(int position) {            if (position == getItemCount() - 1) {                return TYPE_THREE;            } else if (position % 2 == 0) {                return TYPE_ONE;            } else {                return TYPE_TWO;            }        }        @Override        public ItemView onCreateItemView(ViewGroup parent, int type) {            switch (type) {                case TYPE_TWO:                    return new ButtonItemView(parent);                case TYPE_THREE:                    return new SwitchItemView(parent);                default:                    return new TextItemView(parent);            }        }        @Override        public void onBindItemView(ItemView itemView, int position) {        }    }
  • 自定义 Item 类型
    class TextItemView extends Adapter.ItemView<String> {        private TextView mTextView;        public TextItemView(ViewGroup parent) {            super(parent, R.layout.item_text);        }        @Override        public void onCreateViewAfter() {            mTextView = findViewById(R.id.text);        }        @Override        public void bindData(String data) {            mTextView.setText(data);        }    }

其他依赖库

compile 'com.android.support:support-annotations:23.0.0'
  • demo
1 0
原创粉丝点击