首页 > 解决方案 > 显示文件的 ListFragment 问题

问题描述

我有我在标题中所说的问题。我只想显示手机内部存储中的 txt 文件以在点击时处理它。我的问题是它无法识别 ListView。我尝试了许多不同的解决方案,但没有奏效。有人知道吗?下面是课堂上的代码。谢谢

public class Tab3 extends ListFragment {

private ListView listView;
    private String fileNames[];
    View mView;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        listView = getActivity().findViewById(R.id.listView);
        ArrayList<File> files = readFiles(Environment.getExternalStorageDirectory());

        fileNames = new String[files.size()];
        for (int i = 0; i < files.size(); ++i) {
            fileNames[i] = files.get(i).getName().toString().replace(".txt", "");
        }
        ListAdapter listAdapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, fileNames);
        setListAdapter(listAdapter);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        mView = inflater.inflate(R.layout.fragment_tab3, container, false);
        return mView;
    }


    private ArrayList<File> readFiles(File root) {
        ArrayList<File> arrayList = new ArrayList<File>();
        File files[] = root.listFiles();

        for (File file : files) {
            if (file.isDirectory()) {
                arrayList.addAll(readFiles(file));
            } else {
                if (file.getName().endsWith(".txt")) {
                    arrayList.add(file);
                }
            }
        }
        return arrayList;
    }
}

更新

public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment fragment=null;
            switch (position){
                case 0:
                    Tab1Values tab1=new Tab1Values();
                    return tab1;
                case 1:
                    Tab2Map tab2=new Tab2Map();
                    return tab2;
                case 2:
                    Tab3 tab3=new Tab3();
                    return tab3;
            }
            return fragment;
        }
        @Override
        public int getCount() {
            // Show 3 total pages.
            return 3;
        }
    }

标签: androidarraylistandroid-listfragment

解决方案


我认为应该是listView.setAdapter(listAdapter);


推荐阅读