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