compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-7'
关键代码:
/**
* Created by wuyunqiang on 2018/1/16.
*/
public class PullLayout extends ViewGroupManager<SmartRefreshLayout> {
@Override
public String getName() {
return "PullLayout";
}
@Override
protected SmartRefreshLayout createViewInstance(ThemedReactContext reactContext) {
SmartRefreshLayout refreshLayout = (SmartRefreshLayout) LayoutInflater.from(reactContext).inflate(R.layout.activity_pull,null);
header = new Header(reactContext);
return refreshLayout;
}
@Override
public void addView(SmartRefreshLayout parent, View child, int index) {
super.addView(parent, child, index);
parent.addView(header,0);//设置header
parent.onFinishInflate();//在这个方法里面添加子布局 这里要主动调用否则无法显示下拉刷新内容
}
//发送给RN刷新事件 加载数据
public void refresh(ThemedReactContext reactContext,SmartRefreshLayout refreshlayout){
if(reactContext!=null){
WritableMap params = Arguments.createMap();
params.putString("from","native");
Log.i(TAG,"开始刷新");
if(CanRefresh){
CanRefresh = false; this.dispatchEvent(reactContext,refreshlayout,"onRefreshReleased",params);
}
}
}
public void dispatchEvent(final ReactContext reactContext,
final SmartRefreshLayout refreshlayout,
final String eventName,
@android.support.annotation.Nullable final WritableMap params) {
if (reactContext==null) {
Log.i(TAG, "reactContext==null");
refreshlayout.finishRefresh();
}else{
Log.i(TAG, "发送消息事件 " +"refreshlayout View id : " + refreshlayout.getId());
Log.i(TAG, "key:" + this.Key+eventName);
//原生模块发送事件
reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(this.Key+eventName, params);
}
}
效果如图:非常流畅不会卡顿
pullLayout.gif