0

こんにちは、各日付のヘッダーとその下のコンテンツを持つ json フィードからリストを作成しようとしています。しかし、私が入ってきたjsonフィードは日付順に整理されていません。すべての日付を取得して重複をチェックするforループを作成しました。これにより、フィードから日付の配列が得られます。次に、各日付のアダプターにヘッダー ビューを追加したいのですが、各日付のコンテンツを取得するために別の for ループを追加する必要があると思いますか? 問題は現時点で私のヘッダービューです

私の質問は、for ループに基づいてヘッダー ビューを追加し、各ヘッダーの下に他のビューを追加するリストを作成するにはどうすればよいですか?

ここに私がAsyncTaskの後に実行している私の関数があります

public void FillData() throws JSONException{    

      ListView list = getListView();
        list.scrollTo(0, 0);
        list.setVerticalFadingEdgeEnabled(false);

           list.setTextFilterEnabled(true);

           LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
            View header = inflater.inflate( R.layout.homeheader, list, false);

       fixturesView = LayoutInflater.from(getBaseContext()).inflate(R.layout.fixturescell,
                 null);


       //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{   

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

               if(matchDatesArray.length() != 0){

                   int lm = t - 1;
                   JSONObject lastDateDict = fixturesArray.getJSONObject(lm);
                   String lastMatchDate = lastDateDict.getString("matchdate");

                   Log.v("MyFix", "lastMatchDate " + lastMatchDate);

                   if(matchDate.equals(lastMatchDate)){
                       Log.v("MyFix", "2 are the same");                        
                   } else {
                       Log.v("MyFix", "add new matchdate to array");   
                       matchDatesArray.put(matchDate);
                   }

               } else {
                   Log.v("MyFix", "add new matchdate to array (first time only)");                      
                   matchDatesArray.put(matchDate);    
               }
            }


            Log.v("MyFix", "matchDatesArray = " + matchDatesArray);

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

         DateHeader = LayoutInflater.from(getBaseContext()).inflate(R.layout.redcell,
                 null);

         adapter = new MergeAdapter();

        for(int t = 0; t < matchDatesArray.length(); t++){      

          JSONObject mdheaderdict = matchDatesArray.getJSONObject(t);
           String matchheader = mdheaderdict.getString("matchdate");

               TextView matchdayheader = (TextView) DateHeader.findViewById(R.id.redheadertext);
               matchdayheader.setText(matchheader);
               adapter.addView(DateHeader);
        }               
     }     
       setListAdapter(adapter);  

} 

json フィードの例を次に示します

fixturesdata{"code":200,"error":null,"data":{"fixtures":[{"kickoff":"15:00:00","matchdate":"2012-07-14","homescore":null,"awayscore":null,"attendance":null,"homepens":null,"awaypens":null,"division_id":"5059","division":"Testing 1","comp":"LGE","location":null,"fixture_note":null,"hometeam_id":"64930","hometeam":"Team 1","awayteam_id":"64933","awayteam":"Team 4"},{"kickoff":"15:00:00","matchdate":"2012-07-14","homescore":null,"awayscore":null,"attendance":null,"homepens":null,"awaypens":null,"division_id":"5059","division":"Testing 1","comp":"LGE","location":null,"fixture_note":null,"hometeam_id":"64935","hometeam":"Team 6","awayteam_id":"64937","awayteam":"Team 8"},{"kickoff":"15:00:00","matchdate":"2012-07-28","homescore":null,"awayscore":null,"attendance":null,"homepens":null,"awaypens":null,"division_id":"5059","division":"Testing 1","comp":"LGE","location":null,"fixture_note":null,"hometeam_id":"64930","hometeam":"Team 1","awayteam_id":"64931","awayteam":"Team 2"},{"kickoff":"15:00:00","matchdate":"2012-07-28","homescore":null,"awayscore":null,"attendance":null,"homepens":null,"awaypens":null,"division_id":"5059","division":"Testing 1","comp":"LGE","location":null,"fixture_note":null,"hometeam_id":"64930","hometeam":"Team 1","awayteam_id":"64931","awayteam":"Team 2"}]}}
4

1 に答える 1

0

必要なのは、ビューをループに追加することではなく、セクションを使用して適切な ListView を作成することです。サンプル コードを含むこのチュートリアルを読むことをお勧めします。

ListView のセクション化

于 2012-07-12T09:34:04.523 に答える