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

   

  }

});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM