2016-08-25 12 views
-1

として取得し、文字列として保存私はsetTeamと呼ばれる文字列データを保存するために、私は内に保存されている各チームのためにUserというクラスを作った後Gsonデータの格納と取得。私のデータ格納クラスでは、整数

public class DataStorage { 
     private static final String TEAM = "Teams"; 
     private static final String TEAM_INFO = "teaminfo"; 
     private static Gson gson = new Gson(); 


     public static void setTeam(MainActivity context, Collection<User> teams) { 
      String usersJson = gson.toJson(teams); 
      SharedPreferences.Editor editor = context.getSharedPreferences(TEAM_INFO, Context.MODE_PRIVATE).edit(); 
      editor.putString(TEAM, usersJson); 
      editor.apply(); 
     } 

     public static ArrayList<User> getTeam(Context context){ 
      SharedPreferences prefs = context.getSharedPreferences(TEAM_INFO, Context.MODE_PRIVATE); 
      String usersJson = prefs.getString(TEAM, "[]"); 
      return gson.fromJson(usersJson, new TypeToken<ArrayList<User>>(){}.getType()); 
     } 

    } 

getTeamと呼ばれるデータを取得するためにGsonを使用しています私のjsonデータベース。したがって、各setTeamのために、私はいくつかの数字が含まれてダブル文字列ArrayListを作成している主な活動でteamNamegameWongameLost

public class User implements Serializable { 

    private String teamName; 
    private int gameWon; 
    private int gameLost; 

    public void setName(String name) {this.teamName = name;} 
    public String getName() {return teamName;} 

    public void setGameWon(int wonHome){this.gameWon = wonHome;} 
    public int getGameWon(){return gameWon;} 

    public void setGameLost (int gameLoss){this.gameLost = gameLoss;} 
    public int getGameLost(){return gameLost;} 
} 

があります。

private final String[][] dataTeams = new String[30][3]; 

したがって、dataTeamsのdouble配列には、gameWonとgameLostを持つ30チームがあります。 gameWonとgameLostは数値文字列です。

これで、私はdataTeams内のものをJsonデータベースに保存しようとしています。

User c = new User(); 
c.setName(dataTeams[i][0]); 
c.setGameWon(Integer.parseInt(dataTeams[i][2])); 
c.setGameLost(Integer.parseInt(dataTeams[i][3])); 

teams.add(c); 
DataStorage.setTeam(this, teams); 

私はデータを取得するときに成功しました。

ArrayList<User> users = DataStorage.getTeam(this); 
     String [] teams = new String[30]; 
     for(int i = 0; i < 30; i++) { 
      teams[i] = users.get(i).getName() + " W:" + users.get(i).getGameWon() + " L:" + users.get(i).getGameLost(); 
     } 

のgetNameは、すべてのチームのために正確である、しかし、彼らのgetGameWonとgetGameLostはすべて0であり、それはだから今、私はJSONクラスIかどうかの間で立ち往生していますダブル配列にdataTeams

あるものではありません私は

c.setGameWon(Integer.parseInt(dataTeams[i][2])); 
c.setGameLost(Integer.parseInt(dataTeams[i][3])); 

または私は整数が間違って解析していますintに解析されたときに文字列を保存しませんでしたDataStorageを作りました。 dataTeamで

データは

Team W L 
Atlanta  60 22 
Boston  40 42 
Brooklyn 38 44 
Charlotte 33 49 
Chicago  50 32 
Cleveland 53 29 
Dallas  50 32 
Denver  30 52 
Detroit  32 50 
Golden State 67 15 
Houston  56 26 
Indiana  38 44 
L.A. Clippers 56 26 
L.A. Lakers  21 61 
Memphis  55 27 
Miami  37 45 
Milwaukee 41 41 
Minnesota 16 66 
New Orleans 45 37 
New York 17 65 
Oklahoma City 45 37 
Orlando  25 57 
Philadelphia 18 64 
Phoenix  39 43 
Portland 51 31 
Sacramento 29 53 
San Antonio 55 27 
Toronto  49 33 
Utah  38 44 
Washington 46 36 
+0

JSONデータを共有できますか? –

+0

@PhilipRollinsもちろん、私はそれを一番下に追加しました – SimranTea

+1

あなたのデータはJSONではないと思う、それはtsv(タブで区切られた値)です。だからあなたはそれを効率的に読むためにいくつかのCSVライブラリを使用することができます。 – Minh

答えて

0

あなたの宣言です:

private final String[][] dataTeams = new String[30][3]; 

あなたの設定データ・ロジック:

c.setGameWon(Integer.parseInt(dataTeams[i][2])); // << [i][1] 
c.setGameLost(Integer.parseInt(dataTeams[i][3])); // << [i][2] 

間違ったインデックスは、エラーが発生した原因である可能性があります。

関連する問題