zoukankan      html  css  js  c++  java
  • Android 应用开发实例之文件管理器

    2013-07-02

    10.2 文件管理器

    能够浏览和管理手机/存储卡上的文件和文件夹,包括重命名、删除、新建、复制、粘帖等文件操作。

    由于需要浏览大量的文件/文件夹,所以需要使用一个ListView,并且需要自定义列表项视图。

    学习通过程序来定义布局文件

    // 列表项数据

    public class IconifiedText implements Comparable<IconifiedText> {

      // 文件名

      private String mText = “”;

      // 文件图标

      private Drawable mIcon = null;

      // 能否选中

      private boolean mSelectable = true;

      public IconifiedText(String text, Drawable bullet) {

        mIcon = bullet;

        mText = text;

      }

      // mText, mIcon, mSelectable等属性的Getter/Setter方法

      // 重写compareTo方法,比较文件名是否相同

      public int compareTo(IconifiedText other) {

        if(mText != null)

          return mText.compareTo(other.getText());

        else

          throw new IllegalArgumentException();

      }

    }

    // 列表项视图

    public class IconifiedTextView extends LinearLayout {

      // 显示文件名

      private TextView mText = null;

      // 显示图标

      private ImageView mIcon = null;

      public IconifiedTextView(Context context, IconifiedText iconifiedText) {

        super(context);

        setOrientation(HORIZONTAL);

        // 添加图标到布局

        mIcon.setImageDrawable(iconifiedText.getIcon());

        mIcon.setPadding(8, 12, 6, 12);

        addView(mIcon, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        // 添加文件名到布局

        mText = new TextView(context);

        mText.setText(iconifiedText.getText());

        mText.setPadding(8, 6, 6, 10);

        mText.setTextSize(26);

        addView(mText, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

      }

      // 设置文件名

      public void setText(String words){

        mText.setText(words);

      }

      // 设置图标

      public void setIcon(Drawable bullet){

        mIcon.setImageDrawable(bullet);

      }

    }

    // 数据适配器

    public class IconifiedTextListAdapter extends BaseAdapter {

      private Context mContext = null;

      private List<IconifiedText> mItems = new ArrayList<IconifiedText>();

      public IconifiedTextListAdapter(Context context){

        mContext = context;

      }

      // 添加列表项数据

      public void addItem(IconifiedText item) {

        mItems.add(item);

      }

      // 设置列表数据

      public void setListItems(List<IconifiedText> items) {

        mItems = items;

      }

      // 得到列表项个数

      public int getCount() {

        return mItems.size();

      }

      // 得到一个列表项

      public Object getItem(int position) {

        return mItems.get(position);

      }

      // 能否全部选中

      public boolean isAllItemsSelectable() {

        return false;

      }

      // 判断列表项能否被选中

      public boolean isSelectable(int position) {

        return mItems.get(position).isSelectable();

      }

      // 得到一个列表项的id

      public long getItemId(int position) {

       return position;

      }

      // 重写getView方法,得到IconifiedTextView对象

      public View getView(int position, View convertView, ViewGroup parent) {

        IconifiedTextView view = null;

        if(convertView == null) {

          view = new IconifiedTextView(mContext, mItems.get(position));

        } else {

          view = (IconifiedTextView) convertView;

          view.setText(mItems.get(position).getText());

          view.setIcon(mItems.get(position).getIcon());

        }

        return view;

      }

    }

    // 源文件FileManager.java代码片段

    final LayoutInflater inflater = LayoutInflater.from(FileManager.this);

    final View dialogView = inflater.inflate(R.layout.rename, null);

    ((TextView) dialogView.findViewById(R.id.textview01)).setText(“重命名");

    ((EditText) dialogView.findViewById(R.id.edittext01)).setText(file.getName());

    Builder builder = new Builder(FileManager.this);

    builder.setText(“重命名");

    builder.setView(dialogView);

    builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {

      public void onClick(DialogInterface dialog, int which) {

       

      }

    });

  • 相关阅读:
    找上海或深圳塑胶模具工作
    词典新选择网易推出有道[注意第二幅图中的红框]
    《天气与生活》修正版已发布, 以后将由南海维护
    JQuery发布1.2.3
    网游产业的公关
    使用ExtJS,失去的将比得到的还多
    养成习惯,解放大脑
    Vancl网上购衫体验
    深圳人均GDP过一万美元随想
    DateChooser ASP.NET 2.0版 之实用版
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3166195.html
Copyright © 2011-2022 走看看