从SD卡文件夹中以列表视图显示视频文件

3

我正在尝试从SD卡上的“abc”文件夹中显示视频文件列表,我已经成功地显示了它们,但问题是它显示了存储在SD卡上的所有视频文件,甚至不在“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;
}

有什么提示吗?提前感谢。

你有找到解决方案吗?我也遇到了同样的问题。 - Ravi Bhojani
3个回答

0
不要使用以下代码:
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);
这一定会对你有所帮助……

0
不要在这种情况下使用内容提供程序。内容提供程序将为您提供有关设备上找到的所有视频的信息。
编写自己的小实用程序来扫描和拾取所需的文件/文件夹。

但是我已经给出了路径'/sdcard/abc',但仍然显示所有视频文件。 - Larik

0

为托管查询提供一个过滤条件,以过滤您的文件夹名称。

查看方法的javadoc。它具有选择记录的条件。这应该允许您选择所需的子集。


1
我该如何提供筛选条件?我尝试了Uri a = Uri.parse("/sdcard/abc")和videocursor=managedQuery(a, proj, null, null, null);但仍然失败了。 - Larik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接