带有AsyncTask的位图和文本列表

时间:2013-10-23 20:39:39

标签: android android-asynctask

我需要一些帮助我的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(),但它不起作用。请帮忙!

0 个答案:

没有答案