LimitMoreView
Introduction: Android 针对某些数据展示类似 ListView,但数据又不足一屏的情况,对数据进行封装,可通过 ViewType 设置不同类型,相比 ListView/RecyclerView 效率更高。
Tags:
但数据又不足一屏的情况-对数据进行封装-可通过ViewType设置不同类型-相比ListView/Recyc-在开发中有的时候会遇到类似 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
