Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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
Android 基于excel文件中的数据动态将自定义布局添加到ArrayList_Android_Android Layout_Android Listview_Apache Poi_Android Arrayadapter - Fatal编程技术网

Android 基于excel文件中的数据动态将自定义布局添加到ArrayList

Android 基于excel文件中的数据动态将自定义布局添加到ArrayList,android,android-layout,android-listview,apache-poi,android-arrayadapter,Android,Android Layout,Android Listview,Apache Poi,Android Arrayadapter,在这里,我想根据excel中的数据动态地将行(自定义布局)添加到ArrayList中。一切正常,只是我只加载了ArrayAdapter的最后一个值 首先是我的实例变量的声明: List<Record> model = new ArrayList<Record>(); RecordAdapter adapter = null; 这是我用来从excel文件加载数据的loadData()方法: public void loadData() { //Instantiat

在这里,我想根据excel中的数据动态地将行(自定义布局)添加到ArrayList中。一切正常,只是我只加载了ArrayAdapter的最后一个值

首先是我的实例变量的声明:

List<Record> model = new ArrayList<Record>();
RecordAdapter adapter = null;
这是我用来从excel文件加载数据的loadData()方法:

public void loadData() {
    //Instantiate holder
    Record r = new Record();
    try {
        //get the excel file
        workbook = new HSSFWorkbook(file);
        sheet = workbook.getSheetAt(0);

        //parse data from excel to holder
        for (int i = FIRST_ROW_TO_GET; i <= (sheet.getLastRowNum() + 1); i++) {
            Row row = sheet.getRow(i);
            //New Data
            if (row == null) {
                r.setFormNo(filename(fileName));
                r.setEntryNo(String.valueOf(i));
                r.setPNO("Data Baru");
                r.setDefSpec("Tidak Ada");
                r.setLpF("");
                r.setOrycDmg(false);
                r.setTermiteDmg(false);
                r.setRatDmg(false);
                r.setSampler("");
                r.setPnD_Date("");
                r.setPnD_Time("");

            } else {
                //Existing Data
                for (int cn = row.getFirstCellNum(); cn <= row.getLastCellNum(); cn++) {
                    Cell c = row.getCell(cn, Row.RETURN_BLANK_AS_NULL);
                    //Blank cells handler
                    if (c == null) {
                        switch (cn) {
                            case 0:
                                r.setFormNo(filename(fileName));
                                break;
                            case 1:
                                r.setEntryNo(String.valueOf(i));
                                break;
                            case 2:
                                r.setPNO("Data Baru");
                                break;
                            case 3:
                                r.setDefSpec("Tidak Ada");
                                break;
                            case 4:
                                r.setLpF("");
                                break;
                            case 5:
                                r.setOrycDmg(false);
                                break;
                            case 6:
                                r.setTermiteDmg(false);
                                break;
                            case 7:
                                r.setRatDmg(false);
                                break;
                            case 8:
                                r.setSampler("");
                                break;
                            case 9:
                                r.setPnD_Date("");
                                break;
                            case 10:
                                r.setPnD_Time("");
                                break;
                        }

                    } else {
                        //non empty cells handler
                        switch (cn) {
                            case 0:
                                r.setFormNo(c.getStringCellValue());
                                break;
                            case 1:
                                r.setEntryNo(c.getStringCellValue());
                                break;
                            case 2:
                                r.setPNO(c.getStringCellValue());
                                break;
                            case 3:
                                r.setDefSpec(c.getStringCellValue());
                                break;
                            case 4:
                                r.setLpF(c.getStringCellValue());
                                break;
                            case 5:
                                if (Integer.parseInt(c.getStringCellValue()) == 1)
                                    r.setOrycDmg(true);
                                else
                                    r.setOrycDmg(false);
                                break;
                            case 6:
                                if (Integer.parseInt(c.getStringCellValue()) == 1)
                                    r.setTermiteDmg(true);
                                else
                                    r.setTermiteDmg(false);
                                break;
                            case 7:
                                if (Integer.parseInt(c.getStringCellValue()) == 1)
                                    r.setRatDmg(true);
                                else
                                    r.setRatDmg(false);
                                break;
                            case 8:
                                r.setSampler(c.getStringCellValue());
                                break;
                            case 9:
                                r.setPnD_Date(c.getStringCellValue());
                                break;
                            case 10:
                                r.setPnD_Time(c.getStringCellValue());
                                break;
                        }

                    }
                }
            }
            adapter.add(r);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public void loadData(){
//实例化持有者
记录r=新记录();
试一试{
//获取excel文件
工作簿=新的HSSF工作簿(文件);
工作表=工作簿。getSheetAt(0);
//将数据从excel解析到holder

对于(int i=FIRST_ROW_TO_GET;i您需要在循环中初始化一个新的
Record
对象。否则它将更新相同的对象并为每一行显示相同的数据

public void loadData() {
    try {
        //get the excel file
        workbook = new HSSFWorkbook(file);
        sheet = workbook.getSheetAt(0);

        //parse data from excel to holder
        for (int i = FIRST_ROW_TO_GET; i <= (sheet.getLastRowNum() + 1); i++) {
            Record r = new Record(); // move this HERE
            Row row = sheet.getRow(i);

            ...
            ...
public void loadData(){
试一试{
//获取excel文件
工作簿=新的HSSF工作簿(文件);
工作表=工作簿。getSheetAt(0);
//将数据从excel解析到holder

对于(int i=FIRST_ROW_TO_GET;i)“用LoadData()循环的最后一个值填充ListView”是什么意思?您能更清楚地解释一下吗?在LoadData()的//parse data from excel TO holder部分,您在哪里调用
notifyDataSetChanged
函数。我尝试从excel文件加载所有内容,直到该文件的最后一行+1行(对于新数据)。假设excel文件中有4行数据。从逻辑上讲,循环应使用4行数据填充ListView,并且仅在第5行显示行==null(对于新数据).但我得到的是ListView中填充了5行新数据行。
public void loadData() {
    //Instantiate holder
    Record r = new Record();
    try {
        //get the excel file
        workbook = new HSSFWorkbook(file);
        sheet = workbook.getSheetAt(0);

        //parse data from excel to holder
        for (int i = FIRST_ROW_TO_GET; i <= (sheet.getLastRowNum() + 1); i++) {
            Row row = sheet.getRow(i);
            //New Data
            if (row == null) {
                r.setFormNo(filename(fileName));
                r.setEntryNo(String.valueOf(i));
                r.setPNO("Data Baru");
                r.setDefSpec("Tidak Ada");
                r.setLpF("");
                r.setOrycDmg(false);
                r.setTermiteDmg(false);
                r.setRatDmg(false);
                r.setSampler("");
                r.setPnD_Date("");
                r.setPnD_Time("");

            } else {
                //Existing Data
                for (int cn = row.getFirstCellNum(); cn <= row.getLastCellNum(); cn++) {
                    Cell c = row.getCell(cn, Row.RETURN_BLANK_AS_NULL);
                    //Blank cells handler
                    if (c == null) {
                        switch (cn) {
                            case 0:
                                r.setFormNo(filename(fileName));
                                break;
                            case 1:
                                r.setEntryNo(String.valueOf(i));
                                break;
                            case 2:
                                r.setPNO("Data Baru");
                                break;
                            case 3:
                                r.setDefSpec("Tidak Ada");
                                break;
                            case 4:
                                r.setLpF("");
                                break;
                            case 5:
                                r.setOrycDmg(false);
                                break;
                            case 6:
                                r.setTermiteDmg(false);
                                break;
                            case 7:
                                r.setRatDmg(false);
                                break;
                            case 8:
                                r.setSampler("");
                                break;
                            case 9:
                                r.setPnD_Date("");
                                break;
                            case 10:
                                r.setPnD_Time("");
                                break;
                        }

                    } else {
                        //non empty cells handler
                        switch (cn) {
                            case 0:
                                r.setFormNo(c.getStringCellValue());
                                break;
                            case 1:
                                r.setEntryNo(c.getStringCellValue());
                                break;
                            case 2:
                                r.setPNO(c.getStringCellValue());
                                break;
                            case 3:
                                r.setDefSpec(c.getStringCellValue());
                                break;
                            case 4:
                                r.setLpF(c.getStringCellValue());
                                break;
                            case 5:
                                if (Integer.parseInt(c.getStringCellValue()) == 1)
                                    r.setOrycDmg(true);
                                else
                                    r.setOrycDmg(false);
                                break;
                            case 6:
                                if (Integer.parseInt(c.getStringCellValue()) == 1)
                                    r.setTermiteDmg(true);
                                else
                                    r.setTermiteDmg(false);
                                break;
                            case 7:
                                if (Integer.parseInt(c.getStringCellValue()) == 1)
                                    r.setRatDmg(true);
                                else
                                    r.setRatDmg(false);
                                break;
                            case 8:
                                r.setSampler(c.getStringCellValue());
                                break;
                            case 9:
                                r.setPnD_Date(c.getStringCellValue());
                                break;
                            case 10:
                                r.setPnD_Time(c.getStringCellValue());
                                break;
                        }

                    }
                }
            }
            adapter.add(r);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public void loadData() {
    try {
        //get the excel file
        workbook = new HSSFWorkbook(file);
        sheet = workbook.getSheetAt(0);

        //parse data from excel to holder
        for (int i = FIRST_ROW_TO_GET; i <= (sheet.getLastRowNum() + 1); i++) {
            Record r = new Record(); // move this HERE
            Row row = sheet.getRow(i);

            ...
            ...