BaseFragment 基于ViewBinding和懶加載onLazyLoad

public abstract class BaseFragment<T extends ViewBinding> extends Fragment {
    public static final String TAG = "BaseFragment";
    protected FragmentActivity mActivity;
    protected T binding; // 泛型綁定類(lèi)
    private boolean isLoaded = false;

    @Override
    public void onAttach(@NotNull Context context) {
        super.onAttach(context);
        mActivity = getActivity();
    }

    @Nullable
    @Override
    public View onCreateView(@NotNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = createViewBinding(inflater, container); // 創(chuàng)建綁定類(lèi)實(shí)例
        initData(getArguments());
        initView();
        return binding.getRoot(); // 返回根視圖
    }

    // 創(chuàng)建視圖綁定的抽象方法
    protected abstract T createViewBinding(LayoutInflater inflater, ViewGroup container);

    protected void initData(Bundle arguments) {
    }

    protected abstract void initView();

    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onResume");
        if (!isLoaded) {
            onLazyLoad();
            Log.d(TAG, this + "lazyInit:!!!!!!!");
            isLoaded = true;
        }
    }

    protected void onLazyLoad() {

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        isLoaded = false;
    }

}

使用方式

build.gradle文件添加支持dataBinding

   dataBinding {
        enabled = true
    }

重寫(xiě) createViewBinding()綁定布局文件.xml

public class VojsLiveCoverFragment extends BaseFragment<VojsliveCoverFragmentBinding> {
    public static final String TAG = "VojsLiveCoverFragment";

    @Override
    protected VojsliveCoverFragmentBinding createViewBinding(LayoutInflater inflater, ViewGroup container) {
        return VojsliveCoverFragmentBinding.inflate(inflater, container, false);
    }

    public static VojsLiveCoverFragment newInstance(VojsLJBean vojsLJBean) {
        VojsLiveCoverFragment fragment = new VojsLiveCoverFragment();
        Bundle args = new Bundle();
        args.putSerializable(VOJS_LJ_BEAN, vojsLJBean);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    protected void initView() {
         Glide.with(getContext()).load("URL").into(binding.blurCoverImageView);
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容