选择器activity :

public class FileChooserActivity extends Activity {    private ListView mFileListView = null;    private File[] mFileList = null;    private FileAdapter mFileAdapter = null;    private String mCurPath = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_file_chooser);        setViews();        initData();    }    private void initData() {       switch (FileUtil.getPid()) {           case XXXX:               File file = new File(XXX);               if(file.exists()) {                    mFileList =  file.listFiles();                    mCurPath = XXX;               }               else {                   Toast.makeText(FileChooserActivity.this,getString(R.string.device_not_found),Toast.LENGTH_SHORT).show();               }               break;               }       if(mFileList != null) {           mFileAdapter = new FileAdapter(FileChooserActivity.this,mFileList);           mFileListView.setAdapter(mFileAdapter);       }    }    private void setViews() {        mFileListView = (ListView) findViewById(R.id.file_list);        mFileListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {                mCurPath = mFileList[position].getPath();                if(mFileList[position].isDirectory()) {                    mFileList = mFileList[position].listFiles();                    mFileAdapter.notifyData(mFileList);                }                else if(FileUtil.getFileExtension(mFileList[position].getName()).equalsIgnoreCase("m3u") || FileUtil.getFileExtension(mFileList[position].getName()).equalsIgnoreCase("m3u8") ){                    /**                     * 是M3U文件,传给MAinActivity                     */                    finishWithResult(mFileList[position]);                }                else {                    Toast.makeText(FileChooserActivity.this,getString(R.string.not_m3u),Toast.LENGTH_SHORT).show();                }            }        });    }    private void finishWithResult(File file) {        Uri startDir = Uri.fromFile(file);        Intent intent = new Intent();   // 以intent的方式将结果返回调用类        intent.setDataAndType(startDir,                "vnd.android.cursor.dir/lysesoft.andexplorer.file");        setResult(RESULT_OK, intent);        finish();    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(event.getAction() == KeyEvent.ACTION_DOWN) {            switch (keyCode) {                case KeyEvent.KEYCODE_BACK:                    ViseLog.d("mCurPath : "+mCurPath);                    if(mCurPath.equals(XXX))                    {                        finish();                    }                    else                    {                        File file = new File(mCurPath);                        if(file.isDirectory())                        {                            mCurPath = file.getParentFile().getPath();                            mFileList = file.getParentFile().listFiles();                            mFileAdapter.notifyData(mFileList);                        }                    }                    return true;            }        }        return super.onKeyDown(keyCode, event);    }}
   
activity_file_chooser

<?xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.excellence.m3uplayer.activity.FileChooserActivity">            android:id="@+id/file_list"        android:layout_width="match_parent"        android:layout_height="match_parent">    

FileAdapter:

public class FileAdapter extends BaseAdapter {    private LayoutInflater mInflater;    private Context mContext;    private File[] mFileList;    public FileAdapter(Context context, File[] data )    {        this.mContext = context;        mInflater = LayoutInflater.from(mContext);        this.mFileList = data;    }    public void notifyData(File[] data)    {        mFileList = data;        notifyDataSetChanged();    }    public int getCount()    {        // TODO Auto-generated method stub        return mFileList.length;    }    public Object getItem(int position)    {        // TODO Auto-generated method stub        return position;    }    public long getItemId(int position)    {        // TODO Auto-generated method stub        return position;    }    @SuppressWarnings("deprecation")    public View getView(int position, View convertView, ViewGroup parent)    {        // TODO Auto-generated method stub        final ViewHolder viewHolder;        if (convertView == null)        {            viewHolder = new ViewHolder();            if (viewHolder != null)            {                convertView = mInflater.inflate(R.layout.list_item, null);                viewHolder.mFileName = (TextView) convertView.findViewById(R.id.text_file);                viewHolder.mFileImg = (ImageView) convertView.findViewById(R.id.img_file);                convertView.setTag(viewHolder);            }        }        else        {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.mFileName.setText(mFileList[position].getName());        return convertView;    }    private static class ViewHolder    {        private TextView mFileName;        private ImageView mFileImg;    }

list_item.xml:

<?xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center_horizontal"    android:orientation="horizontal" >            android:id="@+id/img_file"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="10dp"        />            android:id="@+id/text_file"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="22sp"        android:layout_marginLeft="20dp"        />

更多相关文章

  1. Android学习笔记(八)之Android 读写xml文件
  2. Android实现简单的注册登录 POST方式提交数据 基于AndroidStudio
  3. Android札记:防反编译、混淆文件p…
  4. 总结android中的.gradle文件写法及含义
  5. Android中Activity的四种启动方式
  6. 在android中button响应的两种方式
  7. [Android Studio] 使用本地 aar 文件
  8. Android注册广播两种方式的区别
  9. Android Studio 实时显示布局文件Preview窗口

随机推荐

  1. 3、android颜色取值
  2. [Android官方API阅读]___
  3. Android(安卓)CalendarView 使用
  4. Android(安卓)101 for iOS Developers
  5. Android(安卓)各种机型兼容问题
  6. Android(安卓)获取版本号
  7. Android(安卓)Version
  8. Android: Runtime.exec()的陷阱
  9. Accessing internal data on Android(安
  10. Adding prebuilt shared library to Andr