2016-05-06 5 views
2

私は運転免許試験を練習するためのAndroidアプリを作っています。約3000の質問があります。質問オブジェクトには複数の属性(テキスト、カテゴリ、サブカテゴリ、回答、グループ)があります。私はそれらを作成してアプリに入れて、データが変わることはありません。ユーザーがカテゴリを選択すると、アプリはスローグ・データに行き、どの質問が(ユーザーが選択した)要件を満たしているかを見て、それを表示用のリストに入れます。データ/質問、XMLまたはSQLiteを格納するために何を使用する必要がありますか?前もって感謝します。Android - 静的データ用のXMLまたはSQLite

編集: このアプリはインターネット接続を使用しないことを忘れています。また、私はデータを入力するための簡単なJavaアプリケーションを作ることを計画しました。私は政府のウェブサイトからテキストをコピーする(私は自分のデータベースにアクセスできず、私は私のものを作成しなければならない)ので、私はちょうど質問の画像URLをJavaプログラムに入れ、それをダウンロードして自動で名前を付けると考えた。また、新しい質問のテキストを入力すると、他のデータを入力する前にその質問が既に存在するかどうかがわかります。それは私に時間を節約するだろう、私はすべての画像を保存し、それを自分の名前を付ける必要はありません。 XMLを使用していると思ったのです。 JSONまたはSQLiteでこれを行うことはできますか?

答えて

2

あなたは複雑なクエリを実行する必要がない場合は、私は非常によく、このようなGSONJacksonとしてのlibを使ってAndroidアプリに統合以来JSONであなた件のデータを保存することをお勧めします。

あなたのアプリケーションを再構築したくない場合、すべての質問の変更時に再デプロイしてください。あなたは、アプリケーションの読み込み時に要求するjsonファイルを提供する小さなウェブサーバ(apache、nginx、tomcat)があると想像することができます。アプリがオンラインのときに質問をダウンロードしたり、キャッシュされたものを使用したりすることができます。

XMLは、このような用途には冗長な形式であり、多くの機能を持ちません....あなたの最後の質問への応答に

、あなたがそのようなあなたのコードを整理することができます。

/** 
* SOF POST http://stackoverflow.com/posts/37078005 
* @author Jean-Emmanuel 
* @company RIZZE 
*/ 

public class SOF_37078005 { 

    @Test 
    public void test() { 
     QuestionsBean questions = new QuestionsBean(); 

     //fill you questions 
     QuestionBean b=buildQuestionExemple(); 
     questions.add(b); // success 
     questions.add(b); //skipped  

     System.out.println(questions.toJson()); //toJson 
    } 


    private QuestionBean buildQuestionExemple() { 
     QuestionBean b= new QuestionBean(); 
     b.title="What is the size of your boat?"; 
     b.pictures.add("/res/images/boatSize.jpg"); 
     b.order= 1; 
     return b;  
    } 


    public class QuestionsBean{  
     private List<QuestionBean> list = new ArrayList<QuestionBean>(); 

     public QuestionsBean add(QuestionBean b){ 
      if(b!=null && b.title!=null){ 
       for(QuestionBean i : list){ 
        if(i.title.compareToIgnoreCase(b.title)==0){ 
         System.out.println("Question "+b.title+" already exists - skipped & not added"); 
         return this; 
        } 
       } 
       System.out.println("Question "+b.title+" added"); 
       list.add(b);    
      } 
      else{ 
       System.out.println("Question was null/not added"); 
      } 
      return this; 
     } 
     public String toJson() { 
      ObjectMapper m = new ObjectMapper(); 
      m.configure(Feature.ALLOW_SINGLE_QUOTES, true); 
      String j = null; 
      try { 
       j= m.writeValueAsString(list); 

      } catch (JsonProcessingException e) { 
       e.printStackTrace(); 
       System.out.println("JSON Format error:"+ e.getMessage()); 
      } 
      return j; 
     } 


    } 

    public class QuestionBean{  
     private int order; 
     private String title; 
     private List<String> pictures= new ArrayList<String>(); //path to picture 
     private List<String> responseChoice = new ArrayList<String>(); //list of possible choices 


     public int getOrder() { 
      return order; 
     } 
     public void setOrder(int order) { 
      this.order = order; 
     } 
     public String getTitle() { 
      return title; 
     } 
     public void setTitle(String title) { 
      this.title = title; 
     } 
     public List<String> getPictures() { 
      return pictures; 
     } 
     public void setPictures(List<String> pictures) { 
      this.pictures = pictures; 
     } 
     public List<String> getResponseChoice() { 
      return responseChoice; 
     } 
     public void setResponseChoice(List<String> responseChoice) { 
      this.responseChoice = responseChoice; 
     } 


    } 

} 

コンソール出力

Question What is the size of your boat? added 
Question What is the size of your boat? already exists - skipped & not added 
[{"order":1,"title":"What is the size of your boat?","pictures":["/res/images/boatSize.jpg"],"responseChoice":[]}] 

GIST: はあなたに私は「完全な作業コードを提供あなたのために作られました https://gist.github.com/jeorfevre/5d8cbf352784042c7a7b4975fc321466

結論として、JSONを使って作業するにはどうすればよいのですか: 1)jsonをビルドするためにBeanを作成してください(私の例を見てください) 2)jsonをビルドしてファイルに保存します 3)アンドロイドを使用してファイルからビーンにロードしてください(あなたはアンドロイドにあります) 4)ビーンを使ってフォームを作成します(jsonテキストファイルではありません):D

+0

ありがとう、私はJSONを見ていきます。私は自分の投稿を編集しました。編集を読んで、あなたの答えに影響を与えるかどうか教えてください。 – exiibeat

+1

は私の応答を更新しました。これは、Beanを埋める方法、json文字列を作成する方法を示すためです。 :)楽しむ – jeorfevre

+0

ありがとう、非常にありがとう。私は家に帰るときにコードを調べてテストします。私がすべてをテストするとき、私はあなたの答えに印をつけます。 – exiibeat

1

xmlより優れたフィルタリング機能を提供するデータベース(SQLite)をお勧めします。

0

をAndroid用のデータストレージ。

+0

never tryedそれは、試してみてください。共有してくれてありがとう。 – jeorfevre

1

システムに最適なのはSQLiteです。 (テキスト、カテゴリ、サブカテゴリ、回答、グループなど)を維持する必要があるためです。そうすれば、データベースを作成してテーブルを作成する場合です。それは容易に管理でき、XMLとは不可能なお互いの関係が可能です。

+0

ありがとうございます。質問はまったく変わりません。私が見るsqliteの良いことは、カテゴリを分離するために使用できるテーブルだけです。私は自分の投稿を編集しました。編集を読んで、あなたの答えに影響を与えるかどうか教えてください。 – exiibeat

関連する問題