如何在MVVM中使用pdfView小部件(带数据绑定)?

时间:2017-12-06 07:30:08

标签: android pdf mvvm data-binding

我在Android设备的存储空间中有一个pdf文件,我希望使用pdfView小部件显示该文件。我在遵循MVP模式之前已经完成了这个,我在片段活动类中完成了它:

PDF pdfView;
public static String SAMPLE_FILE; //this is where I put in my file location

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

      pdfView = (PDFView)view.findViewById(R.id.pdfView);
      pdfView.fromFile(new File(SAMPLE_FILE))
            .defaultPage(pageNumber)
            .enableSwipe(true)
            .onRender(this)
            .swipeHorizontal(false)
            .onPageChange(this)
            .enableAnnotationRendering(true)
            .load();

}

我现在要做的是使用MVVM实现pdf View。

我遇到的问题是,当我尝试在我的视图模型中实现类似的东西时,这一行:

pdfView = (PDFView) view.findViewById(R.id.pdfView);

返回一个null对象。

显然使用findViewById在使用MVVM时是禁止的,如何在不使用findViewById的情况下实现它?

我用它来显示pdfs:https://github.com/barteksc/AndroidPdfViewer

1 个答案:

答案 0 :(得分:0)

object PDFViewBindingAdapter {
    @JvmStatic
    @BindingAdapter("pdfFile")
    fun setImageURI(pdfView: PDFView, file: File) {
        file?.let {
            pdfView.fromFile(file)
                .defaultPage(0)
                .enableSwipe(true)
                .swipeHorizontal(false)
                .enableAnnotationRendering(true)
                .load()
        }
    }
}