2012-07-04 1 views
0

Привет, я создаю список, в котором есть заголовки дат, а затем содержимое внизу. У меня есть JSON-канал, который содержит встроенные элементы внутри каждого массива, содержащего данные для каждой привязки. Одна строка, которая мне нужна, соответствует matchdate для создания моих заголовков, однако, если бы я просто пропустил ее, она создаст несколько экземпляров одного и того же дня собора, поэтому id есть 3 заголовка с одинаковой датой, например. как я могу извлечь эту информацию и создать другой массив, который говорит, что если эта дата уже существует, пройдите через следующую и так далее. Я знаю, что это довольно конкретный вопрос, но если кто-то может хотя бы указать мне в правильном направлении. заранее спасибо.Android получает строку из массива и создает другой массив

Heres мой корм

fixturesArray = [{"awayteam":"Team 1","comp":"LGE","location":null,"attendance":null,"awayscore":null,"division":"Testing 1","homescore":null,"fixture_note":null,"kickoff":"15:30:00","awayteam_id":"64930","matchdate":"2012-07-07","awaypens":null,"homepens":null,"division_id":"5059","hometeam":"Team 3","hometeam_id":"64932"},{"awayteam":"Team 2","comp":"LGE","location":null,"attendance":null,"awayscore":null,"division":"Testing 1","homescore":null,"fixture_note":null,"kickoff":"15:00:00","awayteam_id":"64931","matchdate":"2012-07-07","awaypens":null,"homepens":null,"division_id":"5059","hometeam":"Team 4","hometeam_id":"64933"},{"awayteam":"Team 4","comp":"LGE","location":null,"attendance":null,"awayscore":null,"division":"Testing 1","homescore":null,"fixture_note":null,"kickoff":"15:00:00","awayteam_id":"64933","matchdate":"2012-07-14","awaypens":null,"homepens":null,"division_id":"5059","hometeam":"Team 1","hometeam_id":"64930"}] 

Вот что я пытался до сих пор

Log.v("MyFix", "fixturesArray = " + fixturesArray); 
     if(fixturesArray.length() < 1){ 

      TextView emptytext = (TextView) fixturesView.findViewById(R.id.TextView02); 
      emptytext.setText("No Upcoming Fixtures Available"); 

     }else{ 
     try{ 


      JSONArray datesArray = null; 
      fixturesInfo = null; 
      String matchDateTemp = ""; 

      for(int t = 0; t < fixturesArray.length(); t++){ 
       JSONObject matchDateDict = fixturesArray.getJSONObject(t); 
       String matchDate = matchDateDict.getString("matchdate"); 
       JSONArray matchdates = matchdates.put(matchDate); 

       Log.v("MyFix", "matchdate = " + matchDate); 

       tempArray.put(t, fixturesArray); 
       fixturesInfo.put(matchDate, tempArray); 

      } 

      Log.v("MyFix", "fixturesInfo = " + fixturesInfo); 
      Log.v("MyFix", "tempArray = " + tempArray); 


     }catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

ответ

0

Просто получить кусок данных, то перебирать нового ArrayList проверки для дубликата перед добавлением.

int matchCount=0;           // set count of matches to 0 
String matchDate = matchDateDict.getString("matchdate"); // get the data to compare 
for (int i = 0; i < uniqueDateArrayList.size(); i++){  // set loop to iterate through unique date arraylist 
    if (matchDate.equals(uniqueDateArray[i])){    // compare the date to the date stored at position i 
     matchCount++;          // if it matches increase the match count 
    } 
} 

if (matchCount == 0) { 
    uniqueDateArrayList.add(matchDate)      // if there is no matching date, add it to the unique date arraylist 
} 

Это должно дать вам список массивов, содержащий все уникальные даты в ваших данных.