【问题标题】:Display video files in listview from sdcard folder在 sdcard 文件夹的列表视图中显示视频文件
【发布时间】:2011-10-12 00:17:54
【问题描述】:

我正在尝试在 sdcard 上的文件夹“abc”中的列表视图中显示视频文件,我已成功显示,但问题是它显示存储在 sdcard 上的所有视频文件,即使在文件夹“abc”之外,实际上我只想要存储的视频文件在要显示的文件夹“abc”中。我在谷歌上搜索了更多天,但没有找到任何解决方案。我的代码是:

videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
count = videocursor.getCount();
videolist = (ListView) findViewById(R.id.listview);
videolist.setAdapter(new VideoAdapter(getApplicationContext()));
videolist.setOnItemClickListener(videogridlistener);
}
private OnItemClickListener videogridlistener = new OnItemClickListener() {
public void onItemClick(AdapterView<?>parent, View v, int position,
long id) {
System.gc();
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
videocursor.moveToPosition(position);
String filename = videocursor.getString(video_column_index);
Intent intent = new Intent(VideoActivity.this, ViewVideo.class);
intent.putExtra("videofilename", filename);
startActivity(intent);
}
};

public class VideoAdapter extends BaseAdapter {
private Context vContext;
public VideoAdapter(Context c) {
vContext = c;
}

public int getCount() {
return count;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
TextView tv = new TextView(vContext.getApplicationContext());
String id = null;
if (convertView == null) {
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE);
videocursor.moveToPosition(position);
id = videocursor.getString(video_column_index);
tv.setText(id);
} 
else
{
tv = (TextView) convertView;
return tv;
}

任何提示?提前致谢。

【问题讨论】:

  • 你有什么解决办法吗?我也面临同样的问题

标签: android listview video sd-card


【解决方案1】:

在这种情况下不要使用内容提供程序。内容提供商将为您提供有关它可以在您的设备上找到的所有视频的信息。

编写您自己的小实用程序来扫描和提取您需要的文件/文件夹。

【讨论】:

  • 但我也给出了“/sdcard/abc”的路径,但仍然显示所有视频文件。
【解决方案2】:

为过滤文件夹名称的托管查询提供过滤条件。

查看javadoc for the method。它有选择记录的标准。这应该允许您选择所需的子集。

【讨论】:

  • 如何提供过滤条件?我试过 Uri a = Uri.parse("/sdcard/abc") 和 videocursor=managedQuery(a, proj, null, null, null);但还是失败了。
【解决方案3】:

不要使用以下代码:

video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);

使用以下代码编辑此代码:

videocursor = MainActivity.this.managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,null, MediaStore.Images.Media.DATA + "like ?",new String[] {"%abc%"},null);

这肯定会帮助你.......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多