/*
* Created by LuaView.
* Copyright (c) 2017, Alibaba Group. All rights reserved.
*
* This source code is licensed under the MIT.
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
*/
package com.taobao.luaview.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.taobao.luaview.fun.mapper.ui.UIViewGroupMethodMapper;
import com.taobao.luaview.global.LuaViewManager;
import com.taobao.luaview.userdata.base.UDLuaTable;
import com.taobao.luaview.userdata.ui.UDView;
import com.taobao.luaview.userdata.ui.UDViewGroup;
import com.taobao.luaview.userdata.ui.UDViewPager;
import com.taobao.luaview.view.LVViewGroup;
import org.luaj.vm2.Globals;
/**
* ViewPager 的 Fragment
*
* @author song
* @date 15/9/18
*/
@SuppressLint("ValidFragment")
public class LVPageFragment extends Fragment {
private Globals mGlobals;
private UDViewPager mInitProps;
private int mPosInViewPager;
public LVPageFragment(Globals globals, UDViewPager mInitProps, int posInViewPager) {
this.mGlobals = globals;
this.mInitProps = mInitProps;
this.mPosInViewPager = posInViewPager;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//View封装
final UDView page = new UDViewGroup(createPageLayout(), mGlobals, null);//TODO 为什么用mLuaUserData.getmetatable()不行
//对外数据封装,必须使用LuaTable
final UDLuaTable pageData = new UDLuaTable(page);
final View pageView = pageData.getView();
//初始化View
initView(pageData, mPosInViewPager);
//绘制数据
renderView(pageData, mPosInViewPager);
return pageView;
}
/**
* 调用LuaView的Init方法进行Cell的初始化
*
* @param position
* @return
*/
private void initView(UDLuaTable page, int position) {
this.mGlobals.saveContainer(page.getLVViewGroup());
this.mInitProps.callPageInit(page, position);
this.mGlobals.restoreContainer();
}
/**
* 调用LuaView的Layout方法进行数据填充
*
* @param page
* @param position
*/
private void renderView(UDLuaTable page, int position) {
this.mGlobals.saveContainer(page.getLVViewGroup());
this.mInitProps.callPageLayout(page, position);
this.mGlobals.restoreContainer();
}
/**
* 创建 cell 的布局
*
* @return
*/
private LVViewGroup createPageLayout() {
return new LVViewGroup(mGlobals, mInitProps.getmetatable(), null);
}
}