Kylen徐 2016-07-02 09:48 采纳率: 0%
浏览 2206

android中怎么去获取sd卡只含有视频的文件夹,含有视频文件夹显示到listview中,求解答

android中怎么去获取sd卡只含有视频的文件夹,含有视频文件夹显示到listview中,求解答

  • 写回答

4条回答 默认 最新

  • 彩色贝 2016-07-02 11:12
    关注

    package com.example.caiqiufang;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import android.app.Activity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.provider.MediaStore.Video.Media;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.Toast;

    public class MainActivity extends Activity
    {
    ListView listView_show;
    ArrayList names = new ArrayList(); //显示名
    ArrayList fileNames = new ArrayList();//存储文件绝对路径

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        listView_show = (ListView) findViewById(R.id.listView_audio);
    
        // 清空names、descs、fileNames集合里原有的数据。
        names.clear();
        //descs.clear();
        fileNames.clear();
        // 通过ContentResolver查询所有图片信息
        Cursor cursor = getContentResolver().query(
            Media.EXTERNAL_CONTENT_URI, null, null, null, null);
        while (cursor.moveToNext())
        {
            // 获取音频的显示名
            String name = cursor.getString(cursor
                .getColumnIndex(Media.DISPLAY_NAME));
    
            // 获取音频的保存位置的数据
            byte[] data = cursor.getBlob(cursor
                .getColumnIndex(Media.DATA));
            // 将图片名添加到names集合中
            names.add(name);
            // 将图片保存路径添加到fileNames集合中
            fileNames.add(new String(data, 0, data.length - 1));
        }
        // 创建一个List集合,List集合的元素是Map
        List<Map<String, Object>> listItems =
            new ArrayList<Map<String, Object>>();
        // 将names集合对象的数据转换到Map集合中
        for (int i = 0; i < names.size(); i++)
        {   
            Map<String, Object> listItem =
                new HashMap<String, Object>();
            listItem.put("name", names.get(i));
            listItems.add(listItem);
        }
        // 创建一个SimpleAdapter
        SimpleAdapter simpleAdapter = new SimpleAdapter(
            MainActivity.this, listItems
            , R.layout.listview_items,
            new String[] { "name" }
            , new int[] {R.id.video_name});
        // 为show ListView组件设置Adapter
        listView_show.setAdapter(simpleAdapter);
    
        // 为show ListView的列表项单击事件添加监听器
        listView_show.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent
                , View source, int position, long id)
    
            {   
                 //点击某一个listview的item,显示该文件的绝对路径
                 Toast.makeText(MainActivity.this, fileNames.get(position), Toast.LENGTH_SHORT).show();
            }
        });
    }
    

    }
    下面是layout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/listView_audio"/>


    listview中的东西你应该会吧,这是只获取手机内存卡中的视频的,同样的方法可以获取音频,音乐。其他的自己探索下吧
    至于你说的获取文件夹,那样的话比较麻烦,所以你还是直接获取视频为好
    如果有用的话就给点积分吧

    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值