Android Open Source - music-tag Library Item Loader






From Project

Back to project page music-tag.

License

The source code is released under:

Apache License

If you think the Android project music-tag 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

package binauld.pierre.musictag.io;
// ww w  . jav a2s .c o m
import android.os.AsyncTask;
import android.util.Log;

import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;

import binauld.pierre.musictag.adapter.LibraryItemAdapter;
import binauld.pierre.musictag.collection.MultipleBufferedList;
import binauld.pierre.musictag.factory.LibraryItemFactory;
import binauld.pierre.musictag.item.LibraryItem;
import binauld.pierre.musictag.item.LoadingState;
import binauld.pierre.musictag.item.NodeItem;

/**
 * Load all the audio files and directories from a folder to an adapter.
 * This task is executed asynchronously when execute is called.
 */
public class LibraryItemLoader extends AsyncTask<File, Void, Integer> {

    private int updateStep;

    private MultipleBufferedList<LibraryItem> items;
    private LibraryItemFactory factory;
    private int invalidItemCount;

    private LibraryItemAdapter adapter;
    private NodeItem node;
    private Comparator<LibraryItem> comparator;


    public LibraryItemLoader(LibraryItemAdapter adapter, LibraryItemFactory libraryItemFactory, Comparator<LibraryItem> comparator, int updateStep) {
        this.updateStep = updateStep;

        this.adapter = adapter;
        this.node = adapter.getCurrentNode();
        this.factory = libraryItemFactory;

        this.items = node.getChildren();
        this.comparator = comparator;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        node.setState(LoadingState.LOADING);
    }

    @Override
    protected Integer doInBackground(File... files) {


        int j = 0;
        for (int i = 0; i < files.length; i++) {

            try {
                LibraryItem item = factory.build(files[i], node);

                this.items.add(item);

                j = ++j % updateStep;
                if (j == 0 || i == files.length - 1) {
                    Collections.sort(items.getWorkingList(), comparator);
                    items.push();
                    publishProgress();
                }
            } catch (IOException e) {
                invalidItemCount++;
                Log.w(this.getClass().toString(), e.getMessage());
            }
        }

        return items.size();
    }

    @Override
    protected void onProgressUpdate(Void... voids) {
        items.pull();
        node.setInvalidItemCount(invalidItemCount);
        adapter.notifyDataSetChanged();
    }

    @Override
    protected void onPostExecute(Integer count) {
        super.onPostExecute(count);
        node.setState(LoadingState.LOADED);
        adapter.notifyDataSetChanged();
    }
}




Java Source Code List

binauld.pierre.musictag.ApplicationTest.java
binauld.pierre.musictag.activities.MainActivity.java
binauld.pierre.musictag.activities.SettingsActivity.java
binauld.pierre.musictag.activities.TagFormActivity.java
binauld.pierre.musictag.activities.TagSuggestionActivity.java
binauld.pierre.musictag.adapter.LibraryItemAdapter.java
binauld.pierre.musictag.adapter.SuggestionItemAdapter.java
binauld.pierre.musictag.adapter.SuggestionViewHolder.java
binauld.pierre.musictag.collection.LibraryItemComparator.java
binauld.pierre.musictag.collection.MultipleBufferedList.java
binauld.pierre.musictag.decoder.AudioFileBitmapDecoder.java
binauld.pierre.musictag.decoder.BitmapDecoder.java
binauld.pierre.musictag.decoder.ResourceBitmapDecoder.java
binauld.pierre.musictag.factory.FileFilterFactory.java
binauld.pierre.musictag.factory.LibraryItemFactory.java
binauld.pierre.musictag.fragments.SettingsFragment.java
binauld.pierre.musictag.helper.LibraryItemFactoryHelper.java
binauld.pierre.musictag.helper.LoaderHelper.java
binauld.pierre.musictag.io.ArtworkLoader.java
binauld.pierre.musictag.io.AsyncDrawable.java
binauld.pierre.musictag.io.DefaultArtworkLoader.java
binauld.pierre.musictag.io.LibraryItemLoaderManager.java
binauld.pierre.musictag.io.LibraryItemLoader.java
binauld.pierre.musictag.io.SuggestionLoader.java
binauld.pierre.musictag.item.AudioItem.java
binauld.pierre.musictag.item.ChildItem.java
binauld.pierre.musictag.item.FolderItem.java
binauld.pierre.musictag.item.LibraryItem.java
binauld.pierre.musictag.item.LoadingState.java
binauld.pierre.musictag.item.NodeItem.java
binauld.pierre.musictag.item.SuggestionItem.java
binauld.pierre.musictag.service.ArtworkService.java
binauld.pierre.musictag.service.CacheService.java
binauld.pierre.musictag.service.Locator.java
binauld.pierre.musictag.tag.Id3TagParcelable.java
binauld.pierre.musictag.tag.Id3Tag.java
binauld.pierre.musictag.tag.SupportedTag.java
binauld.pierre.musictag.widget.AnimatedProgressBar.java