保利威文档中心

幫助中心

5_4-手机开播场景-文档管理

更新時間:2023-04-17 15:27:57

1 功能概述

文件管理模組包含選擇PPT文件、上傳&刪除PPT文件、檢視PPT每頁詳細資訊等功能。文件管理是一個彈層頁面,整個介面被封裝在PLVLSPptListLayout中。

2 使用演示

文件管理是一個彈層頁面,與一般直接寫入xml的佈局不同,使用彈層頁面只需建立彈層物件,並呼叫open()方法即可顯示彈層。

// PLVLSStatusBarLayout.java
private void initView() {
    // 创建了文档管理弹层页面
    pptListLayout = new PLVLSPptListLayout(getContext());
}

private void processSelectDocument() {
    if (pptListLayout != null) {
        // 点击状态栏上面的文档图标时,调用open打开文档管理弹层
        pptListLayout.open();
    }
}

3 實作介紹

3.1 文件展示部分

文件展示包含兩種列表的展示,分別是顯示PPT封面的所有文件列表PLVLSPptViewType.COVER,以及顯示PPT每頁詳細資訊的文件詳情列表PLVLSPptViewType.PAGE。這兩種列表使用同一個RecyclerView和Adapter展示,透過為Adapter設定不同的viewType來區分。

以下程式碼展示如何取得所有PPT文件列表的資料,並設定給Adapter進行列表顯示。

// PLVLSPptListLayout.java
public void open() {
    // 打开弹层时,初始化弹层视图
    initViewByShowType();
}
private void initViewByShowType() {
    // 请求更新数据
    requestUpdateData();
}

/**
 * 根据显示样式,向Presenter请求更新列表数据
 */
private void requestUpdateData() {
    if (showViewType == PLVLSPptViewType.COVER) {
        // 向Presenter请求更新PPT文档列表数据
        PLVDocumentPresenter.getInstance().requestGetPptCoverList();
    } else if (showViewType == PLVLSPptViewType.PAGE) {
        PLVDocumentPresenter.getInstance().requestGetPptPageList(currentAutoId);
    }
}

在非同步請求取得文件列表資料後,Presenter會將文件列表資料回呼給視圖。

// PLVLSPptListLayout.java
// MVP - View 回调实现
mvpView = new PLVAbsDocumentView() {
    @Override
    public void onPptCoverList(@Nullable PLVSPPTInfo pptInfo) {
        processPptCoverList(pptInfo);
    }
}

在方法processPptCoverList()中,會對文件資料進行解析,並轉換為視圖物件PLVLSPptVO,將視圖物件列表傳給Adapter即可展示文件列表。

3.2 文件上傳刪除部分

文件刪除透過呼叫Presenter的deleteDocument()方法實現。

// PLVLSPptListLayout.java
// 设置列表项长按点击监听
pptListAdapter.setOnPptItemLongClickListener(new PLVLSPptListViewHolder.OnPptItemLongClickListener() {
    @Override
    public void onLongClick(View view, final int id, final String fileId) {
        if (pptListAdapter.getRealViewType() != PLVLSPptViewType.COVER) {
            return;
        }
        if (documentDeleteArrow != null) {
            // 设置删除确认箭头的点击回调
            documentDeleteArrow.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // 点击删除箭头后 弹窗提示是否删除
                    documentDeleteConfirmDialog
                            .setRightBtnListener(new OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    // 点击确认后,调用Presenter删除文档
                                    PLVDocumentPresenter.getInstance().deleteDocument(fileId);
                                    documentDeleteConfirmDialog.hide();
                                }
                            })
                            .show();
                }
            });
            // 显示删除确认箭头
            documentDeleteArrow.showAtLocation(view);
        }
    }
});

文件上傳部分較為複雜,涉及9種文件上傳狀態(見列舉PLVPptUploadStatus)的監聽、本地文件上傳狀態快取、文件上傳失敗狀態的處理等。具體的文件上傳實作細節請見PLVLSPptListLayout類別的程式碼區塊初始化方法 - 文件上傳狀態相關回呼設定

联系客服,在线咨询