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;
}
}