/**
* Copyright 2014 Djia
* All right reserved.
*
* Created on 2014-8-7
*/
package com.wind.gifassistant.data;
import android.content.Context;
import android.os.AsyncTask;
import android.view.View;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.wind.gifassistant.utils.AppUtils;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
/**
*
* @author Djia
* @time 2014-8-7上午10:00:03
* @instuction
*/
public class VideosFilesScanTask extends AsyncTask<Void, Void, ArrayList<String>> {
final Context mContext;
final private ArrayList<String> mListItem;
final private PullToRefreshListView mPullRefreshListView;
final private ListAdapter mAdapter;
final private TextView mEmptyNoteTextView;
public VideosFilesScanTask(Context context, ArrayList<String> listItem, TextView emptyNoteView,
PullToRefreshListView pullRefreshListView, ListAdapter adapter) {
mContext = context;
mListItem = listItem;
mPullRefreshListView = pullRefreshListView;
mAdapter = adapter;
mEmptyNoteTextView = emptyNoteView;
}
/* (non-Javadoc)
* @see android.os.AsyncTask#doInBackground(Params[])
*/
@Override
protected ArrayList<String> doInBackground(Void... params) {
// Simulates a background job.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
ArrayList<String> result = new ArrayList<String>();
try {
getVideoFiles(result, new File(AppUtils.VIDEOS_FOLDER_PATH));
} catch (Exception e) {
// TODO: handle exception
return null;
}
return result;
}
@Override
protected void onPostExecute(ArrayList<String> result) {
mListItem.clear();
if (result != null && result.size() > 0 ) {
mListItem.addAll(result);
}
//通知程序数据集已经改变,如果不做通知,那么将不会刷新mListItems的集合
((BaseAdapter) mAdapter).notifyDataSetChanged();
// Call onRefreshComplete when the list has been refreshed.
mPullRefreshListView.onRefreshComplete();
if (mEmptyNoteTextView != null) {
if (mListItem.size() > 0) {
mEmptyNoteTextView.setVisibility(View.GONE);
} else {
mEmptyNoteTextView.setVisibility(View.GONE);
mEmptyNoteTextView.setText("下拉进行刷新");
}
}
super.onPostExecute(result);
}
private void getVideoFiles(final ArrayList<String> list,File file){
file.listFiles(new FileFilter(){
@Override
public boolean accept(File file) {
// TODO Auto-generated method stub
if (file != null && file.length() <= 0) {
return false;
}
String name = file.getName();
int i = name.indexOf('.');
if(i != -1){
name = name.substring(i);
if(name.equalsIgnoreCase(".mp4") || name.equalsIgnoreCase(".3gp")){
list.add(file.getAbsolutePath());
return true;
}
}else if(file.isDirectory()){
getVideoFiles(list, file);
}
return false;
}
});
}
}