我需要一些帮助我的List设置AsyncTask。该列表显示视频缩略图以及存储在目录中的视频的视频名称。视频是本地视频,因此不会从网络下载。没有AsyncTask,列表非常滞后。
public class MainActivity extends ListActivity {
String directory = "/SavedVideos/";
String path = Environment.getExternalStorageDirectory() + directory;
String rootsd = Environment.getExternalStorageDirectory().toString();
Load objMyTask;
File dir = new File(path);
{
assert (dir.exists());
assert (dir.isDirectory());
}
String[] videoList = dir.list();
public class MyThumbnaildapter extends ArrayAdapter<String> {
public MyThumbnaildapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row = convertView;
if (row == null) {
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.activity_main, parent, false);
}
TextView textfilePath = (TextView) row.findViewById(R.id.FilePath);
textfilePath.setText(videoList[position]);
ImageView imageThumbnail = (ImageView) row
.findViewById(R.id.Thumbnail);
Bitmap bmThumbnail;
bmThumbnail = ThumbnailUtils.createVideoThumbnail(path
+ videoList[position], Thumbnails.MICRO_KIND);
imageThumbnail.setImageBitmap(bmThumbnail);
return row;
}
}
class Load extends AsyncTask<String, Integer, Bitmap> {
Dialog dialog;
ProgressBar progressBar;
TextView tvLoading, tvPer;
final ProgressDialog pd = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("Loading...");
pd.setIndeterminate(true);
pd.setCancelable(false);
pd.show();
}
@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
return null;
}
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
setListAdapter(new MyThumbnaildapter(MainActivity.this,
R.layout.activity_main, videoList));
pd.hide();
}
}
void load() {
objMyTask = new Load();
objMyTask.execute();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
load();
ListView lv = getListView();
}
我尝试将getView()
放入doInBackground()
,但它不起作用。请帮忙!