Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView在目录中显示文件时出错_Java_Android_Android Listview_Android Arrayadapter - Fatal编程技术网

Java ListView在目录中显示文件时出错

Java ListView在目录中显示文件时出错,java,android,android-listview,android-arrayadapter,Java,Android,Android Listview,Android Arrayadapter,这是我的密码: package com.test.testing; import java.io.File; import java.util.ArrayList; import java.util.Date; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import a

这是我的密码:

package com.test.testing;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;

import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class PreviousTrip extends Fragment {
    int i;
    String k = "";

    @Override
    public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
        final RelativeLayout mFrame3 =  (RelativeLayout) inflater.inflate( R.layout.ptrip, container, false );

        File folder = new File(Environment.getExternalStorageDirectory() + "/tc/");
        ListView lv;
        ArrayList<String> FilesInFolder = GetFiles(folder);
        lv = (ListView) mFrame3.findViewById(R.id.lvFiles);

        lv.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.ptrip, FilesInFolder));

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                // Clicking on items
             }
        });

        /*File[] filelist = folder.listFiles();
        String[] theNamesOfFiles = new String[filelist.length];
        if (filelist.length > 0) {
            for (i = 0; i < theNamesOfFiles.length; i++) {
                long lastTime = filelist[i].lastModified();
                String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString();
                theNamesOfFiles[i] = filelist[i].getName();
                k = k + String.valueOf(theNamesOfFiles[i]) + " " + dateString + "\n";
            }
            Toast.makeText(getActivity(), k, Toast.LENGTH_SHORT).show();
        }
        else {
            Toast.makeText(getActivity(), "no files", Toast.LENGTH_SHORT).show();
        }*/

        return mFrame3;
    }

    public ArrayList<String> GetFiles(String DirectoryPath) {
        ArrayList<String> MyFiles = new ArrayList<String>();
        File f = new File(DirectoryPath);

        f.mkdirs();
        File[] files = f.listFiles();
        if (files.length == 0)
            return null;
        else {
            for (int i=0; i<files.length; i++) 
                MyFiles.add(files[i].getName());
        }

        return MyFiles;
    }
}
package com.test.testing;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.Date;
导入android.app.Fragment;
导入android.content.Context;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.os.Environment;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.text.format.DateFormat;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.inputmethod.InputMethodManager;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.RadioGroup;
导入android.widget.RadioGroup.OnCheckedChangeListener;
导入android.widget.RelativeLayout;
导入android.widget.TextView;
导入android.widget.Toast;
公共类PreviousTrip扩展片段{
int i;
字符串k=“”;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
最终RelativeLayout mFrame3=(RelativeLayout)充气机。充气(R.layout.ptrip,容器,假);
File folder=新文件(Environment.getExternalStorageDirectory()+“/tc/”;
ListView lv;
ArrayList FilesInFolder=GetFiles(文件夹);
lv=(ListView)mFrame3.findviewbyd(R.id.lvFiles);
lv.setAdapter(新阵列适配器),
android.R.layout.ptrip,fileinfolder);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//点击项目
}
});
/*File[]filelist=folder.listFiles();
String[]theNamesOfFiles=新字符串[filelist.length];
如果(filelist.length>0){
对于(i=0;iandroid.R.layout.some_布局只有在
some_布局
是android框架的一部分时才可能

如果
R.layout.ptrip
是您的布局之一,则必须向构造函数提供此布局中
TextView
id
。例如,您的初始化应如下所示:

lv.setAdapter(new ArrayAdapter<String>(this, R.layout.ptrip,
                               R.id.some_textview_inside_layout_ptrip, FilesInFolder)); 

有很多错误

您对列表视图项目使用了错误的布局
ptrip
。项目布局必须具有
TextView
android:id=“@android:id/text1”
才能自动使用
ArrayAdapter

下面是一些经过改进的代码:

public class PreviousTrip extends Fragment {
    int i;
    String k = "";

    @Override
    public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
        final RelativeLayout mFrame3 =  (RelativeLayout) inflater.inflate( R.layout.ptrip, container, false );
        final ListView lv = (ListView) mFrame3.findViewById(R.id.lvFiles);

        final File directory = new File(Environment.getExternalStorageDirectory(), "tc");

        final ArrayList<String> files = GetFiles(directory);

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,files);

        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                // Clicking on items
            }
        });

        return mFrame3;
    }

    public ArrayList<String> GetFiles(File directory) {
        ArrayList<String> files = new ArrayList<String>();

        directory.mkdirs();

        if(!directory.exists()){return files;}

        File[] fileArray = directory.listFiles();
        for (int i=0; i<fileArray.length; i++){
            files.add(fileArray[i].getName());
        }

        return files;
    }
}
公共类PreviousTrip扩展片段{
int i;
字符串k=“”;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
最终RelativeLayout mFrame3=(RelativeLayout)充气机。充气(R.layout.ptrip,容器,假);
最终ListView lv=(ListView)mFrame3.findViewById(R.id.lvFiles);
最终文件目录=新文件(Environment.getExternalStorageDirectory(),“tc”);
最终ArrayList文件=GetFiles(目录);
最终的ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,files);
低压设置适配器(适配器);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//点击项目
}
});
返回mFrame3;
}
公共ArrayList GetFiles(文件目录){
ArrayList files=新的ArrayList();
mkdirs()目录;
如果(!directory.exists()){return files;}
File[]fileArray=directory.listFiles();

对于(inti=0;我为什么有
android.R.layout.ptrip
?它不是android框架中的布局文件。请改用
R.layout.ptrip
。编辑:事实上,即使这样也不行。让我为您发布一个答案。
lv.setAdapter(新的ArrayAdapter(这个,R.layout.ptrip,fileinfolder))
给我这个错误:
构造函数ArrayAdapter(PreviousTrip,int,ArrayList)未定义
是因为我在使用充气机吗?清理你的项目,然后你会看到xml错误xml没有显示任何错误。我在上面发布了我的xml文件。但是Listview不是已经显示了文本吗?所以在我的内部?所以,你尝试了
lv.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,fileinfolder));
但它不起作用?我得到了这个错误:
构造函数ArrayAdapter(PreviousTrip,int,ArrayList)如果我添加
simple\u list\u item\u 1
您的
ptrip.xml
没有
TextView
。创建一个没有布局、按钮等的xml文件:只有
TextView
。并将此文件用作
lv.setAdapter(新的ArrayAdapter(这个,R.layout.TextView\u only\u布局,fileinfolder));
。你需要使用
getActivity()
而不是
这个
,因为你使用的是片段。我没有投票给你
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.ptrip, FilesInFolder)); 
Error: ptrip cannot be resolved or is not a field
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.ptrip,
                               R.id.some_textview_inside_layout_ptrip, FilesInFolder)); 
    lv.setAdapter(new ArrayAdapter<String>(this, R.layout.ptrip, FilesInFolder));  
public class PreviousTrip extends Fragment {
    int i;
    String k = "";

    @Override
    public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
        final RelativeLayout mFrame3 =  (RelativeLayout) inflater.inflate( R.layout.ptrip, container, false );
        final ListView lv = (ListView) mFrame3.findViewById(R.id.lvFiles);

        final File directory = new File(Environment.getExternalStorageDirectory(), "tc");

        final ArrayList<String> files = GetFiles(directory);

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,files);

        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                // Clicking on items
            }
        });

        return mFrame3;
    }

    public ArrayList<String> GetFiles(File directory) {
        ArrayList<String> files = new ArrayList<String>();

        directory.mkdirs();

        if(!directory.exists()){return files;}

        File[] fileArray = directory.listFiles();
        for (int i=0; i<fileArray.length; i++){
            files.add(fileArray[i].getName());
        }

        return files;
    }
}