Comments (7)
v-layout 是什么?
from smartrefreshlayout.
阿里的virtual-layout框架 https://github.com/alibaba/vlayout
from smartrefreshlayout.
可以贴出你使用 v-layout 的代码吗?
from smartrefreshlayout.
`public class MainFragment extends BaseFragment {
@BindView(R.id.my_recycler_view)
RecyclerView my_recycler_view;
@BindView(refreshLayout)
TwinklingRefreshLayout mTwinklingRefreshLayout;
private String[] name = new String[]{"超级WIFI", "万家超市", "服装城", "美妆城", "皮具城"};
// 测试轮播图数据
private String[] images = {
"http://img2.3lian.com/2014/f2/37/d/40.jpg",
"http://d.3987.com/sqmy_131219/001.jpg",
"http://img2.3lian.com/2014/f2/37/d/39.jpg"
};
private String[] detail = {"值得买", "超划算", "新人福利", "全网秒杀"};
private int[] resource = {R.drawable.test_1, R.drawable.test_2, R.drawable.test_3, R.drawable.test_4};
private ArrayList<String> mDatas;
@Override
protected View initLayout() {
return View.inflate(mContext, R.layout.wz_main_fragment, null);
}
@Override
protected void init() {
super.init();
int marbottom = UiUtils.dipToPx(mContext, 10);
//v-layout使用
//1.绑定recyclerView和VirtualLayoutManager
VirtualLayoutManager layoutManager = new VirtualLayoutManager(mContext);
my_recycler_view.setLayoutManager(layoutManager);
//2.设置组件复用回收池
RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool();
my_recycler_view.setRecycledViewPool(viewPool);
viewPool.setMaxRecycledViews(0, 10);
//4.数据列表,创建对应的LayoutHelper
//TODO 1.顶部是输入框,使用吸边布局
StickyLayoutHelper stickyLayoutHelper = new StickyLayoutHelper();
stickyLayoutHelper.setStickyStart(true); //设置吸顶
//TODO 2.设置线性布局,viewpager 广告
LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
linearLayoutHelper.setItemCount(1);// 设置布局里Item个数
//TODO 3.设置线性布局,分类列表
LinearLayoutHelper llh = new LinearLayoutHelper();
llh.setItemCount(1);// 设置布局里Item个数
llh.setMarginBottom(marbottom);
//TODO 4. 网格布局,商品图片列表
// 在构造函数设置每行的网格个数
GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(2);
gridLayoutHelper.setMarginBottom(marbottom);
//TODO 5.分割区
LinearLayoutHelper llh2 = new LinearLayoutHelper();
llh2.setItemCount(1);// 设置布局里Item个数
llh2.setMarginBottom(marbottom);
//TODO 6. 更多商品
LinearLayoutHelper llh3 = new LinearLayoutHelper();
llh3.setItemCount(1);// 设置布局里Item个数
llh3.setMarginBottom(marbottom);
//TODO 1.
StickAdapter stick_adapter = new StickAdapter(mContext, stickyLayoutHelper, 1);
//TODO 2.
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(mContext, linearLayoutHelper, 1, images);
List<CategoryBean> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
CategoryBean bean = new CategoryBean();
bean.imgResource = R.drawable.ic_category_0;
bean.name = name[i];
list.add(bean);
}
//TODO 3.
CategoryAdapter categoryAdapter = new CategoryAdapter(mContext, llh, list);
//TODO 4.商品列表
List<CategoryBean> iamg = new ArrayList<>();
for (int i = 0; i < 4; i++) {
CategoryBean bean = new CategoryBean();
bean.name = detail[i];
bean.imgResource = resource[i];
iamg.add(bean);
}
GoodsGridviewAdapter goodsGridviewAdapter = new GoodsGridviewAdapter(mContext, gridLayoutHelper, iamg);
//TODO 5.
SplitAdapter splitAdapter = new SplitAdapter(mContext, llh2);
//TODO 6.
MoreGoodsAdapter moreGoodsAdapter = new MoreGoodsAdapter(mContext, llh3);
List<DelegateAdapter.Adapter> adapters = new LinkedList<>();
adapters.add(stick_adapter);
adapters.add(viewPagerAdapter);
adapters.add(categoryAdapter);
adapters.add(goodsGridviewAdapter);
adapters.add(splitAdapter);
adapters.add(moreGoodsAdapter);
// 3. 创建DelegateAdapter对象 & 将layoutManager绑定到DelegateAdapter
DelegateAdapter delegateAdapter = new DelegateAdapter(layoutManager);
// 4. 将DelegateAdapter.Adapter列表绑定到DelegateAdapter
delegateAdapter.setAdapters(adapters);
// 5. 将delegateAdapter绑定到recyclerView
my_recycler_view.setAdapter(delegateAdapter);
}
@Override
protected void initListener() {
super.initListener();
mTwinklingRefreshLayout.setOnRefreshListener(new RefreshListenerAdapter() {
@Override
public void onRefresh(final TwinklingRefreshLayout refreshLayout) {
ToastUtils.showShort(mContext, "刷新界面");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
refreshLayout.finishRefreshing();
}
}, 2000);
}
@Override
public void onLoadMore(final TwinklingRefreshLayout refreshLayout) {
ToastUtils.showShort(mContext, "加载更多");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
refreshLayout.finishLoadmore();
}
}, 2000);
}
});
}
}布局:
<com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"/>
</com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout>`
from smartrefreshlayout.
我测试了一下,
LinearLayoutHelper: 线性布局
GridLayoutHelper: Grid布局, 支持横向的colspan
FixLayoutHelper: 固定布局,始终在屏幕固定位置显示
ScrollFixLayoutHelper: 固定布局,但之后当页面滑动到该图片区域才显示, 可以用来做返回顶部或其他书签等
FloatLayoutHelper: 浮动布局,可以固定显示在屏幕上,但用户可以拖拽其位置
ColumnLayoutHelper: 栏格布局,都布局在一排,可以配置不同列之间的宽度比值
SingleLayoutHelper: 通栏布局,只会显示一个组件View
OnePlusNLayoutHelper: 一拖N布局,可以配置1-5个子元素
StickyLayoutHelper: stikcy布局, 可以配置吸顶或者吸底
StaggeredGridLayoutHelper: 瀑布流布局,可配置间隔高度/宽度
全都测试通过,并没有异常现象,表现结果和 TwinklingRefreshLayout 一样
需要确认一下,你使用的版本,还有具体是出现了怎样的错误?可以截图吗?
from smartrefreshlayout.
方便加个好友吗,可以把代码给你看看,项目目前只有基本页面没什么内容 qq:526437186 邮箱:[email protected]
from smartrefreshlayout.
使用vlayout时,adapter中itemView需要设置LayoutParams,如下:
class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.banner) Banner banner;
public ViewHolder(View itemView) {
super(itemView);
itemView.setLayoutParams(mLayoutParams);
}
}
from smartrefreshlayout.
Related Issues (20)
- OutOfMemoryError
- 有时候refrash并没有执行。。
- Activity滑动卡顿
- 页面上滑出现抖动,滑动不上去。
- SmartRefreshLayout 2.06版本没法自定义列表头和尾 HOT 1
- 2.0.6版本,onRefresh之后,马上调用finishRefresh,recyclerView点击无法响应 HOT 1
- WaterDrop的仿ios的组件,该引用哪一个库?
- 无法在布局文件中直接引用刷新等监听吗
- refresh会重置loadmore设置的状态? HOT 1
- 一个空指针异常
- bug反馈:Android12及以上默认开启的滚动拉伸效果偶尔会影响下拉刷新
- java.lang.ArrayIndexOutOfBoundsException HOT 4
- 版本2.1.0 华为权限关闭后,空指针
- webview滚动,下拉失效问题(已解决) HOT 1
- maven 最新版本未使用 Androidx HOT 1
- 刷新header为什么和内容控件一直有一段距离如recycleview HOT 1
- 一直不停的上拉加载,会出现ANR
- 有时候下拉刷新或者上来加载,没有反应 HOT 1
- MIUI设备滑动异常 HOT 25
- 一个非常诡异的问题,没有在iss找到这样的问题 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smartrefreshlayout.