2016-08-25 3 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 array에는 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] 

잘못된 인덱스 오류가 발생한 원인 일 수 있습니다.