Android 循环以填充在listview中使用的数组(从txt文件字符串填充数组)

Android 循环以填充在listview中使用的数组(从txt文件字符串填充数组),android,android-listview,android-arrayadapter,Android,Android Listview,Android Arrayadapter,我正在尝试填充一个数组,以便在android的listview中使用。我想用SD卡上几个.txt文件中存储的数据填充数组。我有一个Int names Mx,它告诉循环要运行多少次(这就是我想要它做的)。值Mx也是数组中所需的条目数 我目前正在使用此代码,但它不起作用: public void arrayload() { ///////////////////////////////////working here/////////////////////////////////

我正在尝试填充一个数组,以便在android的listview中使用。我想用SD卡上几个.txt文件中存储的数据填充数组。我有一个Int names Mx,它告诉循环要运行多少次(这就是我想要它做的)。值Mx也是数组中所需的条目数

我目前正在使用此代码,但它不起作用:

 public void arrayload() {
        ///////////////////////////////////working here///////////////////////////////// 
         //new looping code
         for (int i=1; i<=Mx; i++){
                try{
                     String fileName = String.valueOf(i) +".txt";   
                     File myFile = new File("/sdcard/mx/" +fileName);
                     FileInputStream fIn = new FileInputStream(myFile);
                        BufferedReader myReader = new BufferedReader(
                                new InputStreamReader(fIn));
                        String aDataRow = "";
                        String aBuffer = "";
                        while ((aDataRow = myReader.readLine()) != null) {
                            aBuffer += aDataRow + "\n";
                        }
                String[] lvdata = new String[Mx];
                lvdata[i] = aBuffer;
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.logbooklayout, lvdata);
                   lv1.setAdapter(adapter);
                   lv1.scrollTo(0, mxlv); // set the listview at a sensible point
                }
                 catch (Exception e) {
                        Toast.makeText(getBaseContext(), e.getMessage(),
                                Toast.LENGTH_SHORT).show();
                    }
         }
这方面的任何帮助都是非常欢迎的。我只是在用Java切齿,所以我的代码需要改进很多

谢谢

试试这个

public void arrayload() {
        ///////////////////////////////////working here///////////////////////////////// 

     String[] lvdata = new String[Mx];

     for (int i=0 ; i < Mx ;i++){
        lvdata[i]="";
     }

         for (int i=0; i<Mx; i++){
                try{
                     String fileName = String.valueOf(i) +".txt";   
                     File myFile = new File("/sdcard/mx/" +fileName);
                     FileInputStream fIn = new FileInputStream(myFile);
                        BufferedReader myReader = new BufferedReader(
                                new InputStreamReader(fIn));
                        String aDataRow = "";
                        String aBuffer = "";
                        while ((aDataRow = myReader.readLine()) != null) {
                            aBuffer += aDataRow + "\n";
                        }

                lvdata[i] = aBuffer;

                }
                 catch (Exception e) {
                        Toast.makeText(getBaseContext(), e.getMessage(),
                                Toast.LENGTH_SHORT).show();
                }
     }  
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.logbooklayout, lvdata);
    lv1.setAdapter(adapter);
        lv1.scrollTo(0, mxlv); // set the listview at a sensible point
}
public void arrayload(){
///////////////////////////////////在这里工作////////////
字符串[]lvdata=新字符串[Mx];
对于(int i=0;i对于(int i=0;我对此表示感谢。在某些方面,我可以很高兴我离得不远,但现在你已经给了我解释,很明显我在循环所有内容!谢谢,只是想问一下logcat点,如果我放Log.e(tag,msg,tr)当我编写崩溃代码时,这会减少我必须处理的logcat数量吗?在尝试使用您描述的方式填充数组时,我仍然会遇到一个强制关闭。logcat输出看起来非常相似…有什么想法吗?您可能还有另一个问题。如果在获取数据时遇到异常,您的a中可能有一个空项数组。要确认这一点,请尝试在循环之前初始化数组的每个值。感谢更新。你的意思是我应该初始化数组中的每个值吗?值我的意思是在读取过程中可能会出现问题。因此,为了证实或削弱这一假设,你应该在循环之前初始化lvdata。这肯定不会解决你的问题,但会有问题更多信息。我编辑这篇文章是为了向你展示。
public void arrayload() {
        ///////////////////////////////////working here///////////////////////////////// 

     String[] lvdata = new String[Mx];

     for (int i=0 ; i < Mx ;i++){
        lvdata[i]="";
     }

         for (int i=0; i<Mx; i++){
                try{
                     String fileName = String.valueOf(i) +".txt";   
                     File myFile = new File("/sdcard/mx/" +fileName);
                     FileInputStream fIn = new FileInputStream(myFile);
                        BufferedReader myReader = new BufferedReader(
                                new InputStreamReader(fIn));
                        String aDataRow = "";
                        String aBuffer = "";
                        while ((aDataRow = myReader.readLine()) != null) {
                            aBuffer += aDataRow + "\n";
                        }

                lvdata[i] = aBuffer;

                }
                 catch (Exception e) {
                        Toast.makeText(getBaseContext(), e.getMessage(),
                                Toast.LENGTH_SHORT).show();
                }
     }  
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.logbooklayout, lvdata);
    lv1.setAdapter(adapter);
        lv1.scrollTo(0, mxlv); // set the listview at a sensible point
}