我有一个文本文件,我从我的SD卡,其中包含纯文本格式的数组拉。下面是该文件的我试图导入文本文件转换成字符串的内容...Android:从文件导入并从字符串转换的阵列的问题
http://www.oddree.com/rayhaque/android1.jpg,http://www.oddree.com/rayhaque/android2.jpg,http://www.oddree.com/rayhaque/android3.jpg,http://www.oddree.com/rayhaque/android4.jpg,http://www.oddree.com/rayhaque/android5.jpg
,该字符串转换成数组,然后加载数组列表适配器。如果我尝试分割readString或readString的修剪结果,每次都会强制关闭。如果我将该文件的内容复制到一个字符串中,然后使用它...一切都按预期工作。
那么从一个文本文件加载这个东西和从一个包含的字符串加载它有什么区别?这是一个字节转换问题吗?
这是我的代码。我注意到了什么有效,哪些失败了。
public class MainActivity extends Activity {
ListView list;
LazyAdapter adapter;
List<String> strings = new ArrayList<String>();
String readString = new String();
String arrayNBOW;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
File f = new File(Environment.getExternalStorageDirectory()+"/LazyList/gkindex.txt");
FileInputStream fileIS = new FileInputStream(f);
BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS));
while((readString = buf.readLine())!= null){
String arrayNBOW = readString.trim();
Toast.makeText(MainActivity.this, "STARTUPPULL: "+arrayNBOW, Toast.LENGTH_LONG).show();
}
} catch (FileNotFoundException e) {
Toast.makeText(MainActivity.this, "FAIL: "+e, Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (IOException e){
Toast.makeText(MainActivity.this, "FAIL: "+e, Toast.LENGTH_LONG).show();
e.printStackTrace();
}
setContentView(R.layout.main);
list=(ListView)findViewById(R.id.list);
String testArray = "http://www.oddree.com/rayhaque/android1.jpg,http://www.oddree.com/rayhaque/android2.jpg,http://www.oddree.com/rayhaque/android3.jpg";
// THIS FAILS
// String[] testArraySplit = TextUtils.split(arrayNBOW, ",");
// THIS WORKS
String[] testArraySplit = TextUtils.split(testArray, ",");
adapter=new LazyAdapter(this, testArraySplit);
list.setAdapter(adapter);
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(listener);
Button c=(Button)findViewById(R.id.button2);
c.setOnClickListener(loadtext);
}
预先感谢您的任何意见或协助,您可以提供给我! :-)
解决方案中创建FROM EMANNUEL的建议:
public class MainActivity extends Activity {
ListView list;
LazyAdapter adapter;
List<String> strings = new ArrayList<String>();
String readString = new String();
String arrayNBOW;
String[] nardsArray;
String nards;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//新的解决方案
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"/LazyList/gkindex.txt");
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
nards = text.toString();
nardsArray = TextUtils.split(nards, ",");
}
}
catch (IOException e) {
Toast.makeText(MainActivity.this, "FAIL: "+e, Toast.LENGTH_LONG).show();
}
//结束新的解决方案
Toast.makeText(MainActivity.this, "FILE-READ: "+nardsArray, Toast.LENGTH_LONG).show();
setContentView(R.layout.main);
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, nardsArray);
list.setAdapter(adapter);
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(listener);
Button c=(Button)findViewById(R.id.button2);
c.setOnClickListener(loadtext);
}
您是否尝试过在调试器中设置断点,并在调用split()之前查看arrayNBOW的值是什么? – kcoppock 2010-11-10 16:38:22
您必须向我们展示您的堆栈跟踪。 – Falmarri 2010-11-10 18:55:51