0

巨大な Jsonfile からカスタム オブジェクトの非常に単純なリストを作成しています。この単純なリストには、元の解析済み JSON の約 1/8 から 1/10 が含まれています (つまり、400 kb 程度、フル バージョンは 3mb です)。これは破棄できます。このリストで必要なデータのみを使用するので、2 つの言語がサポートされている場合は、単純なリストに必要な 1 つだけを入れます。このリストはシリアル化するので、起動時に常にすべてのデータを解析する必要はありません。

オブジェクトには、いくつかのプレーン データと、ビュー カスタム オブジェクトを含む 2 つのリストが含まれている必要があります。しかし、これらのサブリストを埋めようとすると問題が発生します。エラーはNo enclosing instance of type SimpleVenue is accessible. Must qualify the allocation with an enclosing instance of type SimpleVenue (e.g. x.new A() where x is an instance of SimpleVenue).

私はそれを理解したと思ったので、3 つのオブジェクトを含むトップ オブジェクトを作成しました。

  1. プレーンデータを持つオブジェクト
  2. 2 つの URL (文字列) を含むオブジェクトの最初のリスト
  3. 2 つの文字列と 2 つの日付オブジェクトを含むオブジェクトの 2 番目のリスト。

余分なレベルは実際には少し不必要に感じます.2つのリストオブジェクトをプレーンデータオブジェクトの子にしたかったのです. 誰が私が何を変更する必要があるか知っていますか?

私のクラス:

import java.io.Serializable;
import java.util.Date;
import java.util.List;


public class SimpleVenue implements Serializable, Comparable<SimpleVenue>{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public SimpleVenueData simplevenuedata;
     public List <SimplePhotos> simplephotos;
      public List <SimpleOpeningHours> openinghours;

    public class SimpleVenueData implements Serializable{
        /**
         * 
         */
    private static final long serialVersionUID = 1L;
    public int ID;
    public String name;
    public String category;
    public String address;
    public String city;
    public String tip;
    public String phone;
    public String website;
    public String foursquare;
    public float latitude;
    public float longtitude;
    public String theme;
    public String icon;
    public String exception;


      //setters

public void setId(int id){
    ID=id;
}
public void setName(String vname){
name=vname;
}     
public void setCategory(String icon){
    if(icon.equals("eten.png") || icon.equals("uitgaan.png")){
        category="food";
    }else if(icon.equals("monument.png")){
        category="sights";
    }else if(icon.equals("winkelen.png")){
        category="shops";
    }
}     
public void setAdress(String vaddress){
address = vaddress;
}     

public void setCity(String vcity){
    city=vcity;
    }   

public void setTip(String vtip){
    tip=vtip;
    }
public void setPhone(String vphone){
    phone=vphone;
    }
public void setWebsite(String vwebsite){
    website=vwebsite;
    }

public void setFoursquare(String vfoursquare_link){
    foursquare=vfoursquare_link;
    }
public void setLatitude(float vlatitude){
    latitude=vlatitude;
    }

public void setLongitude(float vlong){
    longtitude=vlong;
    }

public void setTheme(String vtheme){
    theme=vtheme;
    }

public void setIcon(String vicon){
    icon=vicon;
    }
public void setException(String vexception){
     exception =  vexception;
    }

}

    public class SimplePhotos implements Serializable{
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        public String medium;
        public String large;

        public void setMedium(String vmedium){
            medium=vmedium;
            }

        public void setLarge(String vlarge){
            large=vlarge;
            }
        public String getMedium(){
            return medium;
        }

        public String getLarge(){
            return large;
        }

    }

    public class SimpleOpeningHours implements Serializable{
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        public String day;
        public boolean closed;
        public Date starttime;
        public Date endtime;

        //setters
        public void setDay(String vday){
            day=vday;
        }

        public void setClosed(boolean vclosed){
            closed=vclosed;
            }

        public void setStartime(Date vstarttime){
            starttime=vstarttime;
            }
        public void setEndime(Date vendtime){
            endtime=vendtime;
            }

        //getters
        public String getDay(){
            return day;
        }
        public boolean isClose(){
            return closed;
        }
        public Date getStarttime(){
            return starttime;
        }
        public Date getEndtime(){
            return endtime;
        }


    }


    @Override
    public int compareTo(SimpleVenue another) {
        // XXX Auto-generated method stub
        return 0;
    }
}

使用時:

  List<SimpleVenue> sv = new ArrayList<SimpleVenue>();
                                 int selectedPic;
                                 JJsonResponse e;
                                 int k =0; //indicator 1e SimpleVenue
                                 JVenueThemes jtheme;
                                 SimpleVenue tempSv;
                                 SimpleVenueData tempSvd;
                                 SimplePhotos tempPhoto;
                                 int selectedCounter;

                                 for(int i=0;i < jsonResponse.size() ;i++){
                                     e = jsonResponse.get(i);
                                     if(e.venue.hidden == false){ //staat aan
                                         for(int j=0; j<e.venue.themes.size();j++){ //loop door alle themes
                                         if (e.venue.themes.get(j).mobile == true){  //als theme is true
                                             jtheme = e.venue.themes.get(j);
                                             sv.add(new SimpleVenue());
                                             tempSv=sv.get(k);
                                             tempSvd=sv.get(k).simplevenuedata;
                                             tempSvd.setId(k);
                                             tempSvd.setName(e.venue.name);
                                             tempSvd.setAdress(e.venue.address);
                                             tempSvd.setCity(e.venue.city);
                                             tempSvd.setPhone(e.venue.phone);
                                             tempSvd.setWebsite(e.venue.website);
                                             tempSvd.setFoursquare(e.venue.foursquare_link);
                                             tempSvd.setLatitude(e.venue.latitude);
                                             tempSvd.setLongitude(e.venue.longitude);
                                             tempSvd.setCategory(jtheme.icon);
                                             tempSvd.setIcon(jtheme.icon);
                                             // language depending
                                         if (language.equalsIgnoreCase("nld")){ //dutch
                                                tempSvd.setTip(e.venue.tip); 
                                                tempSvd.setTheme(jtheme.name); 
                                             }else{ //english
                                                 tempSvd.setTip(e.venue.tip_en); 
                                                 tempSvd.setTheme(jtheme.name_en); 
                                             }
                                        // selecting pics
                                             if (e.venue.venue_photos.isEmpty() == false){
                                                for(int l=0; l < e.venue.venue_photos.size() ;l++){
                                                    selectedCounter=0;
                                                     if(e.venue.venue_photos.get(l).selected == true){ 
                                                         sv.get(k).simplephotos.add(new SimplePhotos());
//                                                       tempSv.simplephotos.add(new SimplePhotos());
//                                                       tempSv.simplephotos.get(selectedCounter).large=e.venue.venue_photos.get(selectedCounter).large;
//                                                       tempSv.simplephotos.get(selectedCounter).medium=e.venue.venue_photos.get(selectedCounter).medium;
//                                                       selectedCounter++;
                                                     }
                                                 }
                                             }else{
                                                 tempSv.simplephotos.add(new SimpleVenue.SimplePhotos());

                                                 tempSv.simplephotos.get(0).large=null;
                                                 tempSv.simplephotos.get(0).medium=null;
                                               }

                                             // selecting opening hours
                                             //testrun before entering opening hours
                                             Log.i("testrun", "k= " + String.valueOf(k));





                                             k++;
                                         }  
                                     }
                                    }
                                     jsonResponse.remove(i); // 
                                 }

私はそれを比較することすら始めていないので、気にしないでください。しかし、最終的には、名前やテーマなどのいくつかのアイテムでリストを注文します.

4

1 に答える 1

0

外部クラスのインスタンスへの参照が必要 ですか? SimpleVenueDataそうでない場合は、静的なネストされたクラスにします。(または、これらすべてのネストされたクラスを完全に引き出します...)

于 2012-07-27T10:14:07.830 に答える