0

私のアプリでは、サーバーからレコードを取得しています。レコードは xml ファイルにあります。問題なくファイルを取得して解析できます。結果を HashMap に保存していますが、それらの結果をアプリの SQLite データベースに入れたいと思っています。

HashMap のコードは次のとおりです。

            ArrayList<HashMap<String, String>> StudentDownloads = new ArrayList<HashMap<String, String>>();

        String xml = XMLfunctions.getXML(target);


        Document doc = XMLfunctions.XMLfromString(xml);
        if(XMLfunctions.XMLfromString(xml)==null){
            Toast.makeText(this, "Badly Formed File", Toast.LENGTH_LONG).show();  
            finish();
        }          

        int numResults = XMLfunctions.numResults(doc);
        if((numResults <= 0)){
            Toast.makeText(this, "There Were No Student Results To Show", Toast.LENGTH_LONG).show();  
            finish();
        }

        NodeList nodes = doc.getElementsByTagName("Students");

        for (int i = 0; i < nodes.getLength(); i++) {                           
            HashMap<String, String> map = new HashMap<String, String>();    

            Element e = (Element)nodes.item(i);
            map.put("Student Id", "Student Id " + XMLfunctions.getValue(e, "StudentId"));
            map.put("Student Type", "Student Type" + XMLfunctions.getValue(e, "StudentType"));
            map.put("Student Location", "Student Location" + XMLfunctions.getValue(e, "StudentLocation"));
            map.put("Student Mother", "Student Mother" + XMLfunctions.getValue(e, "StudentMother"));
            StudentDownloads.add(map);}         
        };

私のアプリでは、StudentRecord というクラスを使用するデータ入力フォームを既に作成しています。入力フォームでは、この関数を使用してファイルを更新します。

        private void addStudent(StudentRecord newRecord){
             mDB.beginTransaction();
             try {

                    ContentValues StudentRecordToAdd = new ContentValues();
                    StudentRecordToAdd.put(Students.STUDENT_ID, newRecord.getStudentName());
                    StudentRecordToAdd.put(Student.STUDENT_TYPE, newRecord.getStudentType());
                    StudentRecordToAdd.put(Student.STUDENT_LOCATION, newRecord.getStudentLocation());
                    StudentRecordToAdd.put(Student.STUDENT_MOTHER, newRecord.getStudentMother());
                    mDB.insert(Student.STUDENT_TABLE_NAME,Student.STUDENT_ANIMALID, StudentRecordToAdd);
                    mDB.setTransactionSuccessful();
                    Toast.makeText(this,"Recorded Added ",0).show();
             } finally {
                 mDB.endTransaction();
             }

HashMap から NewRecord 関数に値を取得する最良の方法は何ですか? あまりにも長い間見ていたので、私は脳死に陥ったと思います。ありがとうございました

4

1 に答える 1

1

私があなたを正しく読んでいるなら、 addStudent 関数を現在存在しているフォーム/アクティビティからある種の「ヘルパー」クラスに移動する必要があるようです:

private class dbHelper {
  Database mDB; // set this up however you are doing it already

  private void addStudent(StudentRecord newRecord){
    mDB.beginTransaction();
    try {
      ContentValues StudentRecordToAdd = new ContentValues();
      StudentRecordToAdd.put(Students.STUDENT_ID, newRecord.getStudentName());
      StudentRecordToAdd.put(Student.STUDENT_TYPE, newRecord.getStudentType());
      StudentRecordToAdd.put(Student.STUDENT_LOCATION, newRecord.getStudentLocation());
      StudentRecordToAdd.put(Student.STUDENT_MOTHER, newRecord.getStudentMother());
      mDB.insert(Student.STUDENT_TABLE_NAME,Student.STUDENT_ANIMALID, StudentRecordToAdd);
      mDB.setTransactionSuccessful();
      Toast.makeText(this,"Recorded Added ",0).show();
    } finally {
      mDB.endTransaction();
    }
  }
}

XML を解析したら、そのヘルパーを呼び出すだけです。

ArrayList<StudentRecord> StudentDownloads = new ArrayList<StudentRecord>();

for (int i = 0; i < nodes.getLength(); i++) {                           
  Element e = (Element)nodes.item(i);
  int id = Integer.valueOf(XMLfunctions.getValue(e, "StudentId")));
  int type = Integer.valueOf(XMLfunctions.getValue(e, "StudentType")));
  String location = XMLfunctions.getValue(e, "StudentLocation"));
  String mother = XMLfunctions.getValue(e, "StudentMother"));

  StudentRecord newRecord = new StudentRecord(id, type, location, mother);

  StudentDownloads.add(newRecord);
}         

そして、処理が完了したら:

for (StudentRecord s : StudentDownloads) {
  mDBHelper.addStudent(s);
}
于 2012-04-16T22:10:57.977 に答える