- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 
                        public class DataImpl extends AsyncTask<Void, Void, Object> implements IUrl {
    GsonBuilder builder = new GsonBuilder();
    Gson gson = builder.create();
    private IResults what;
    public DataImpl(IResults what) {
        this.what = what;
    }
    @Override
    protected Object doInBackground(Void... params) {
        
        try {
            String url = "";
            if (what instanceof CategoriesList) {
                url = URL + "cat";
            } else if (what instanceof StudentsList) {
                url = URL + "students?cat=" + ((StudentsList) what).category;
            }
            String json = IOUtils.toString(new URL(url));
            fillResults(json, result, gson);
        } catch (Exception ex) {
            if (what instanceof CategoriesList) {
                ((CategoriesList) what).exception = ex;
            } else if (what instanceof StudentsList) {
                ((StudentsList) what).exception = ex;
            }
        }
        return what;
    }
    @Override
    protected void onPostExecute(Object what) {
        if (what instanceof IResults) {
            Observer observer = ((IResults) what).getObserver();
            if (observer != null) {
                observer.update(null, what);
            }
        }
    }
    public static class CategoriesList extends ArrayList<Categoty> implements IResults {
        public Exception exception;
        public WeakReference<Observer> observer ;
        @Override
        public Observer getObserver() {
            return observer == null ? null : observable.get();
        }
    }
    public static class StudentsList extends ArrayList<Student> implements IResults {
        public Exception exception;
        public String category;
        public WeakReference<Observer> observer ;
        @Override
        public Observer getObserver() {
            return observer == null ? null : observable.get();
        }
    }
    public interface IResults {
        Observer getObserver();
    }
}
                                     
        
            это. все. слишком. %;?ч!2!!.