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

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!