尝试调用虚拟方法';void pdfreader.pdfconverter.pdfreaderapp.pdfAdapter.updatepdfffile(java.util.ArrayList)和#x27;关于空对象引用

尝试调用虚拟方法';void pdfreader.pdfconverter.pdfreaderapp.pdfAdapter.updatepdfffile(java.util.ArrayList)和#x27;关于空对象引用,java,android,Java,Android,当我在searchView中键入搜索项目的文本时,我的应用程序会崩溃。我有一个片段和适配器。我下一步做什么?有人帮帮我 这就是我犯的错误- 尝试在空对象引用上调用虚拟方法“void pdfreader.pdfconverter.pdfreaderapp.pdfAdapter.updatePdfFile(java.util.ArrayList)” 这是片段代码 public class Pdf_Reader_fragments extends Fragment implements SearchV

当我在searchView中键入搜索项目的文本时,我的应用程序会崩溃。我有一个片段和适配器。我下一步做什么?有人帮帮我

这就是我犯的错误- 尝试在空对象引用上调用虚拟方法“void pdfreader.pdfconverter.pdfreaderapp.pdfAdapter.updatePdfFile(java.util.ArrayList)”

这是片段代码

public class Pdf_Reader_fragments extends Fragment implements SearchView.OnQueryTextListener {

    public static ArrayList<File> pdffiles = new ArrayList<>();

    RecyclerView recyclerView;

    File folder;
    String[] items;
    static pdfAdapter adapter;

    int number = 0;

    private SwipeRefreshLayout mSwipeRefreshLayout;

    public Pdf_Reader_fragments() {

    }


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

        View view = inflater.inflate(R.layout.fragment_pdf__reader, container, false);

        recyclerView = (RecyclerView) view.findViewById(R.id.recylerView);

        mSwipeRefreshLayout = view.findViewById(R.id.swip);
        setHasOptionsMenu(true);
        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                try {
                    intiViews();
                } catch (Exception e) {

                }

                Toast.makeText(getContext(), "Page Refresh", Toast.LENGTH_SHORT).show();
                mSwipeRefreshLayout.setRefreshing(false);


            }
        });

        intiViews();
        return view;
    }


    private void intiViews() {
        folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
        pdffiles = getPdfFiles(folder);

        ArrayList<File> mypdf = getPdfFiles(Environment.getExternalStorageDirectory());
        items = new String[mypdf.size()];
        for (int i = 0; i < items.length; i++) {
            items[i] = mypdf.get(i).getName().replace(".pdf", "");
        }
        pdfAdapter adapter = new pdfAdapter(getContext(), pdffiles, items);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), RecyclerView.VERTICAL, false));

    }

    private ArrayList<File> getPdfFiles(File folder) {
        ArrayList<File> arrayList = new ArrayList<>();
        File[] file = folder.listFiles();

        if (file != null) {
            for (File singleFile : file) {
                if (singleFile.isDirectory() && !singleFile.isHidden()) {
                    arrayList.addAll(getPdfFiles(singleFile));
                } else {
                    if (singleFile.getName().endsWith(".pdf")) {
                        arrayList.add(singleFile);
                    }
                }
            }
        }
        return arrayList;
    }


    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();

        inflater.inflate(R.menu.search, menu);
        MenuItem item = menu.findItem(R.id.search_button);
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItem.SHOW_AS_ACTION_IF_ROOM);

        SearchView searchView = (SearchView) item.getActionView();
        searchView.setOnQueryTextListener(this);
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        if (adapter != null) {

            query = String.valueOf(query.equals(""));
        }
        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {

        String userInput = newText.toLowerCase();
        ArrayList<File> myfile = new ArrayList<>();

        for (File pdf : pdffiles){
            if (pdf.getName().toLowerCase().contains(userInput)){
                myfile.add(pdf);
            }

            adapter.updatePdfFile(myfile);
        }

          return true;
    }


    }
公共类Pdf\u Reader\u片段扩展片段实现SearchView.OnQueryTextListener{
public static ArrayList pdffiles=new ArrayList();
回收视图回收视图;
文件夹;
字符串[]项;
静态pdfAdapter适配器;
整数=0;
私人SwipeRefreshLayout mSwipeRefreshLayout;
公共Pdf_阅读器_片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u pdf\u阅读器,容器,false);
recyclerView=(recyclerView)view.findViewById(R.id.recylerView);
mSwipeRefreshLayout=view.findViewById(R.id.swip);
设置选项菜单(真);
mSwipeRefreshLayout.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener()){
@凌驾
公共void onRefresh(){
试一试{
intiViews();
}捕获(例外e){
}
Toast.makeText(getContext(),“页面刷新”,Toast.LENGTH_SHORT.show();
mSwipeRefreshLayout.setRefresh(false);
}
});
intiViews();
返回视图;
}
私有视图(){
folder=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
pdffiles=getPdfFiles(文件夹);
ArrayList mypdf=getPdfFiles(Environment.getExternalStorageDirectory());
items=新字符串[mypdf.size()];
对于(int i=0;i
pdfAdapter类

public class pdfAdapter extends RecyclerView.Adapter<pdfAdapter.MyViewHolder> {
    private Context mContext;
    private ArrayList<File> files;
   

    String [] items;


    public pdfAdapter(Context mContext, ArrayList<File> files, String[] items) {
        this.mContext = mContext;
        this.files = files;
        this.items = items;
    }


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.pdf_items, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
        holder.file_name.setText(items[position]);

        holder.popUpMenu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                PopupMenu popupMenu = new PopupMenu(mContext, v);
                popupMenu.getMenuInflater().inflate(R.menu.menu, popupMenu.getMenu());
                popupMenu.show();
                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()){
//                            case R.id.edit:
//                                Toast.makeText(mContext, "Edit", Toast.LENGTH_SHORT).show();
//                                break;
                            case R.id.delete:

                               // Toast.makeText(mContext, "Delete", Toast.LENGTH_SHORT).show();
                                deleteFile(position, v);

                        }
                        return true;
                    }
                   public void deleteFile (final int position, View v) {

                  String uri = files.get(position).getAbsolutePath();
                          final File file = new File (uri);
                       boolean deleted = file.delete();
                       if (deleted) {
                           files.remove(position);
                           notifyItemRemoved(position);
                           notifyItemRangeChanged(position, files.size());
                           Toast.makeText(mContext, "Delete sucessfully", Toast.LENGTH_SHORT).show();
                       }
                   }
                });


            }
        });
        holder.pdf_Layouts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext, PdfViewActivity.class);
                intent.putExtra("position", position);
                mContext.startActivity(intent);
            }});

    }

    @Override
    public int getItemCount() {
        return files.size();
    }






    public class MyViewHolder extends RecyclerView.ViewHolder{

        TextView file_name;
        ImageView file_icon,popUpMenu;
        RelativeLayout pdf_Layouts;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            file_name = itemView.findViewById(R.id.pdf_item_name);
            file_icon = itemView.findViewById(R.id.img_pdf);
            pdf_Layouts = itemView.findViewById(R.id.pdf_items_h);
            popUpMenu  = itemView.findViewById(R.id.more);

        }
    }

    void updatePdfFile(ArrayList<File> fileArrayList){
//       
        files.clear();
        files.addAll(fileArrayList);
        notifyDataSetChanged();
    }

}
公共类pdfAdapter扩展了RecyclerView.Adapter{
私有上下文;
私有ArrayList文件;
字符串[]项;
公共pdfAdapter(上下文mContext、ArrayList文件、字符串[]项){
this.mContext=mContext;
this.files=文件;
这个项目=项目;
}
@非空
@凌驾
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
View=LayoutFlater.from(mContext).充气(R.layout.pdf_items,parent,false);
返回新的MyViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull MyViewHolder holder,final int位置){
holder.file_name.setText(项目[位置]);
holder.popUpMenu.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(最终视图v){
PopupMenu PopupMenu=新的PopupMenu(mContext,v);
充气(R.menu.menu,popupMenu.getMenu());
show();
setOnMenuItemClickListener(新的popupMenu.OnMenuItemClickListener(){
@凌驾
公共布尔onMenuItemClick(菜单项){
开关(item.getItemId()){
//案例R.id.edit:
//Toast.makeText(mContext,“编辑”,Toast.LENGTH_SHORT).show();
//中断;
案例R.id.delete:
//Toast.makeText(mContext,“Delete”,Toast.LENGTH_SHORT.show();
删除文件(位置,v);
}
返回true;
}
公共无效删除文件(最终整型位置,视图v){
字符串uri=files.get(positio)