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) {

       

      }

    });

  • 相关阅读:
    leetcode231 2的幂 leetcode342 4的幂 leetcode326 3的幂
    leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence
    leetcode64. Minimum Path Sum
    leetcode 20 括号匹配
    算法题待做
    leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown 、714. Best Time to Buy and Sell Stock with Transaction Fee
    rand7生成rand10,rand1生成rand6,rand2生成rand5(包含了rand2生成rand3)
    依图
    leetcode 1.Two Sum 、167. Two Sum II
    从分类,排序,top-k多个方面对推荐算法稳定性的评价
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3166195.html
Copyright © 2011-2022 走看看