2013-10-22 40 views
1

我想加载视频的视频缩略图和文件名文本在目录中。由于目录中可能有很多vidoes,我需要使用AsyncTask。当我把代码放在AsyncTask的getView()中时,我遇到了一堆错误。请告诉我我做错了什么。AsyncTask与图像和文字

public class MainActivity extends ListActivity { 

String dirNameSlash = "/videos/"; 
String path = Environment.getExternalStorageDirectory() + dirNameSlash; 
String root_sd = Environment.getExternalStorageDirectory().toString(); 
String theFile = root_sd + "/videos/"; 

File dir = new File(path); 
{ 
    assert (dir.exists()); 
    assert (dir.isDirectory()); 

} 

String[] videoFileList = 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(videoFileList[position]); 
     ImageView imageThumbnail = (ImageView) row 
       .findViewById(R.id.Thumbnail); 

     Bitmap bmThumbnail; 
     bmThumbnail = ThumbnailUtils.createVideoThumbnail(path 
       + videoFileList[position], Thumbnails.MICRO_KIND); 
     imageThumbnail.setImageBitmap(bmThumbnail); 

     return row; 
    } 

} 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(new MyThumbnaildapter(MainActivity.this, 
      R.layout.activity_main, videoFileList)); 

    ListView lv = getListView(); 

} 
+0

什么是那些错误和哪里是aysnctask – Raghunandan

+0

我的变量不工作,因为他们在MyThumbnailAdapter类。然后,我将该类的一部分移至AsyncTask,但这也不起作用。 – user2250122

+0

你会得到什么样的错误?你有一些logcat显示?同时,您的getView()方法可能会遭受一些修改,您需要实现ViewHolder模式,其次您应该尝试处理单独线程中的位图加载,您不希望有一个laggy列表视图。 –

回答

0

我建议你在AsyncTask的地方使用Volley。与AsyncTask相比,实现起来非常简单,而且做得更好。

看一看这里实现http://java.dzone.com/articles/android-%E2%80%93-volley-library

这是榕柯克帕特里克是谁在谷歌I/O 2013 http://www.youtube.com/watch?v=yhv8l9F44qo

抽射最好的活生生的例子是谷歌Play商店解释截击。

+0

这不是主要用于联网吗?视频是本地的,实际上并没有涉及网络。 – user2250122

+0

你这是主要用于联网。 – pyus13