Android Open Source - masterdetail-j2objc-swift Master Detail Loader






From Project

Back to project page masterdetail-j2objc-swift.

License

The source code is released under:

Apache License

If you think the Android project masterdetail-j2objc-swift listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2014 Kirk C. Vogen/* w w w.ja v  a2s. c o  m*/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package masterdetail.android;

import java.util.List;

import masterdetail.model.DetailEntry;
import masterdetail.service.DetailService;

import android.content.AsyncTaskLoader;
import android.content.Context;

public class MasterDetailLoader extends AsyncTaskLoader<List<DetailEntry>> {

  private DetailService detailService;

  private List<DetailEntry> data;
  
  public MasterDetailLoader(Context ctx, DetailService detailService) {
    super(ctx);
    this.detailService = detailService;
  }
  
  @Override
  public List<DetailEntry> loadInBackground() {
    List<DetailEntry> lists = detailService.findAll();
    
    return lists;
  }
  
  @Override
  public void deliverResult(List<DetailEntry> newData) {
    if (isReset()) {
      releaseResources(newData);
      return;
    }
    
    List<DetailEntry> oldData = data;
    data = newData;
    
    if (isStarted())
    {
      super.deliverResult(newData);
    }
    
    if (oldData != null && oldData != newData) {
      releaseResources(oldData);
    }
  }
  
  @Override
  protected void onStartLoading() {
    if (data != null) {
      deliverResult(data);
    }
    
    if (takeContentChanged() || data == null) {
      forceLoad();
    }
  }

  @Override
  protected void onStopLoading() {
    cancelLoad();
  }
  
  @Override
  protected void onReset() {
    onStopLoading();
    
    if (data != null) {
      releaseResources(data);
      data = null;
    }
  }
  
  private void releaseResources(List<DetailEntry> releasedData) {
    // All the resources associated with the loader should be released here. For example, a
    // cursor should be closed.
    //
    // For the DetailService, there is nothing to release.
  }

}




Java Source Code List

masterdetail.android.DetailActivity.java
masterdetail.android.DetailFragment.java
masterdetail.android.MasterActivity.java
masterdetail.android.MasterDetailLoader.java
masterdetail.android.MasterFragment.java
masterdetail.android.service.LocalStorageService.java
masterdetail.android.service.ServiceAdapter.java
masterdetail.android.viewmodel.ViewModelListener.java
masterdetail.model.DetailEntry.java
masterdetail.service.DetailService.java
masterdetail.service.FlatFileDetailService.java
masterdetail.service.StorageService.java
masterdetail.viewmodel.DetailViewModel.java
masterdetail.viewmodel.ViewModel.java