Android手机文件管理

MyAdapter.java
 1 package com.testview;

 2 

 3 import java.util.List;

 4 import java.util.Map;

 5 

 6 import android.content.Context;

 7 import android.graphics.Color;

 8 import android.view.LayoutInflater;

 9 import android.view.View;

10 import android.view.ViewGroup;

11 import android.widget.BaseAdapter;

12 import android.widget.TextView;

13 

14 public class MyAdapter extends BaseAdapter {

15     private LayoutInflater mInflater;

16     private List<Map<String, Object>>mData ;

17     private int  selectItem=-1;

18     private int[] layout;

19     public MyAdapter(Context context, List<Map<String, Object>>mData, int[] layout) {

20      this.mInflater = LayoutInflater.from(context);

21      this.mData = mData;

22      this.layout = layout;

23     }

24     public int getCount() {

25      return mData.size();

26     }

27     public Object getItem(int arg0) {

28      return mData.get(arg0);

29     }

30     public long getItemId(int arg0) {

31      return arg0;

32     }

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

34      ViewHolder holder = null;

35      if (convertView == null) {

36       holder = new ViewHolder();

37       convertView = mInflater.inflate(layout[0], null);

38       holder.titleText = (TextView) convertView.findViewById(layout[1]);

39       holder.infoText = (TextView) convertView.findViewById(layout[2]);

40       

41       convertView.setTag(holder);   

42      } else {

43       holder = (ViewHolder) convertView.getTag();

44      }

45      holder.titleText.setText((String) mData.get(position).get("title"));

46      holder.infoText.setText((String) mData.get(position).get("info"));   

47      

48      if (position == selectItem) {

49       convertView.setBackgroundColor(0xaeefcc00);

50      } 

51      else {

52          convertView.setBackgroundColor(Color.BLACK);

53      }

54      convertView.getBackground().setAlpha(20);//0~255透明度值

55      return convertView;

56     }

57     public  void setSelectItem(int selectItem) {

58       this.selectItem = selectItem;

59     }

60 

61 }
TestListViewActivity .java
  1 package com.testview;

  2 

  3 import java.io.File;

  4 import java.util.ArrayList;

  5 import java.util.Arrays;

  6 import java.util.HashMap;

  7 import java.util.List;

  8 import java.util.Map;

  9 import com.util.SDUtil;

 10 import android.app.Activity;

 11 import android.app.AlertDialog;

 12 import android.os.Bundle;

 13 import android.os.Environment;

 14 import android.view.KeyEvent;

 15 import android.view.View;

 16 import android.view.View.OnClickListener;

 17 import android.widget.AdapterView;

 18 import android.widget.EditText;

 19 import android.widget.ImageButton;

 20 import android.widget.ListView;

 21 

 22 public class TestListViewActivity extends Activity {

 23     /**

 24      * 数据存储

 25      */

 26     private List<Map<String, Object>> mData;

 27     

 28     /**

 29      * 当前访问路径

 30      */

 31     private String currentPath = "/sdcard";

 32     

 33     private ListView setlistViewLeft;

 34     /**

 35      * 自定义数据适配器

 36      */

 37     private MyAdapter adapter;

 38     

 39     /**

 40      * 文件名称

 41      */

 42     private String[] fileNames = null;

 43     

 44     /**

 45      * 文件路径

 46      */

 47     private String[] filePaths = null;

 48     

 49     private EditText editText;

 50     private ImageButton imageBtn;

 51     

 52     private int[] layout = {

 53             R.layout.listinfo, 

 54             R.id.titleleftlist, 

 55             R.id.infoleftlist

 56             };

 57     

 58     @Override

 59     public void onCreate(Bundle savedInstanceState) {

 60      super.onCreate(savedInstanceState);

 61      setContentView(R.layout.main);

 62      setTitle("文件总数:"+getSDCardMassage(currentPath)+"\n"+"当前路径:"+currentPath);

 63      getSearchKey();

 64      mData = getListItems();  

 65      setlistViewLeft = (ListView)findViewById(R.id.listleft); 

 66      adapter = new MyAdapter(this, mData, layout);

 67      setlistViewLeft.setAdapter(adapter);

 68      setlistViewLeft.setOnItemClickListener(mLeftListOnItemClick);

 69     }

 70     

 71     /**

 72      * 初始化数据

 73      */

 74     public void getSearchKey(){

 75         editText = (EditText) findViewById(R.id.entry);

 76         imageBtn = (ImageButton) findViewById(R.id.btn_imageButton);

 77         imageBtn.setOnClickListener(new OnClickListener() {

 78             

 79             @Override

 80             public void onClick(View v) {

 81                 String searchKey = editText.getText().toString();

 82                 if(searchKey == null || "".equals(searchKey)){

 83                     return;

 84                 }

 85                 int length = fileNames.length;

 86                 String[] strKeyName = {};

 87                 String[] strKeyPath = {};

 88                 for(int i = 0; i < length; i++){

 89                     String name = fileNames[i];

 90                     if(name.contains(searchKey)){

 91                         strKeyName = Arrays.copyOf(strKeyName, strKeyName.length+1);

 92                         strKeyPath = Arrays.copyOf(strKeyPath, strKeyPath.length+1);

 93                         strKeyName[strKeyName.length-1] = name;

 94                         strKeyPath[strKeyPath.length-1] = filePaths[i];

 95                     }

 96                 }

 97                 if(strKeyName.length > 0){

 98                     //初始化数据

 99                     setSearchKeyData(strKeyName, strKeyPath);

100                     

101                 }else{

102                 new AlertDialog.Builder(TestListViewActivity.this)

103                      .setTitle("消息")

104                      .setMessage("文件不存在")

105                      .setPositiveButton("确定", null)

106                      .show();

107                 }

108             }

109 

110             

111         });

112     }

113     

114     /**

115      * 初始化搜索数据

116      * @param strKeyName

117      * @param strKeyPath

118      */

119     private void setSearchKeyData(String[] strKeyName, String[] strKeyPath) {

120         fileNames = strKeyName;

121         filePaths = strKeyPath;

122         mData = getListItems();

123         setTitle("文件总数:"+strKeyName.length+"\n"+"当前路径:"+currentPath);

124         initAdapter();

125     }

126     

127     /**

128      * 初始化数据

129      * @param path 文件路径

130      */

131     public void initData(String path){

132         currentPath = path;

133         setTitle("文件总数:"+getSDCardMassage(path)+" "+currentPath);

134         mData = getListItems();

135         editText.setText(null);

136         initAdapter();

137     }

138     

139     public void initAdapter(){

140         setlistViewLeft = (ListView)findViewById(R.id.listleft);

141         adapter = new MyAdapter(this, mData, layout);

142         setlistViewLeft.setAdapter(adapter);

143         setlistViewLeft.setOnItemClickListener(mLeftListOnItemClick);

144     }

145     

146     private List<Map<String,Object>> getListItems(){

147         List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();

148         for(int i=0;i<fileNames.length;i++){

149          Map<String,Object> map = new HashMap<String, Object>();

150          map.put("title", "文件名称");

151          map.put("info", fileNames[i]);

152          listItems.add(map);

153         }

154         return listItems;

155        }

156     

157     AdapterView.OnItemClickListener mLeftListOnItemClick = new AdapterView.OnItemClickListener() {

158 

159         @Override

160         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

161                 long arg3) {

162             

163             adapter.setSelectItem(arg2);

164             adapter.notifyDataSetInvalidated();

165             String v2 = mData.get(arg2).get("info").toString();

166             String str = filePaths[arg2];

167             if(str != null){

168                 //重新初始化界面

169                 mData.clear();

170                 currentPath = str;

171                 initData(str);

172             }else{

173                 SDUtil.openFile(TestListViewActivity.this,  currentPath+"/"+v2);

174             }

175             

176         }

177         

178        };

179     /**

180      * 重写手机返回键事件  

181      */

182        public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {

183         if(keyCode == KeyEvent.KEYCODE_BACK ){

184              back();

185              return true;

186         }

187         return super.onKeyDown(keyCode, event);

188      };

189     

190     /**

191      * 返回数据初始化

192      */

193     private void back() {

194         String path = new File(currentPath).getParentFile().getPath();

195         if("/sdcard".equals(currentPath)){

196             finish();

197             return;

198         }

199         initData(path);

200     }

201     

202     /**

203      * 获取SD卡文件

204      * @param path

205      * @return

206      */

207     public int getSDCardMassage(String path){

208              boolean flag = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

209              if(flag){

210                  if(SDUtil.isExistFiles(path)){

211                      File f = new File(path);

212                      File[] files = f.listFiles();

213                      int size = files.length;

214                      fileNames = new String[size];

215                      filePaths = new String[size];

216                      for(int i = 0; i < size; i++ ){

217                          File exitFile = files[i];

218                          if(exitFile.exists()){

219                              fileNames[i] = exitFile.getName();

220                              if(SDUtil.isExistFiles(exitFile.getAbsolutePath()))

221                                  filePaths[i] = exitFile.getAbsolutePath();

222                              else 

223                                  filePaths[i] = null;

224                          }

225                      }

226                      return size;

227                  }

228              }

229              return 0;

230          }

231 }
main.xml
 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="fill_parent"

 4     android:layout_height="fill_parent"

 5     android:orientation="vertical" >

 6     <RelativeLayout 

 7          android:layout_width="fill_parent"

 8          android:layout_height="wrap_content"

 9          android:background="@color/search_bg_color"

10          >

11          <EditText 

12                 android:id="@+id/entry" 

13                android:layout_width="wrap_content" 

14             android:layout_height="wrap_content" 

15             android:background="@android:drawable/editbox_background" 

16             android:width="285dp"

17             android:height="35dp"

18             android:layout_marginTop="3dp"

19             />

20         <ImageButton

21             android:id="@+id/btn_imageButton" 

22             android:layout_width="fill_parent"

23              android:layout_height="wrap_content"

24              android:text="@string/search_btn"

25              android:background="@drawable/search_image2"

26              android:layout_alignTop="@id/entry"

27             android:layout_toRightOf="@id/entry"

28             android:layout_marginTop="3dp"

29               />

30     </RelativeLayout>

31     <ListView 

32         android:id="@+id/listleft"

33         android:layout_width="fill_parent"

34         android:layout_height="wrap_content">

35     </ListView>

36 </LinearLayout>
listinfo.xml
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    

    <TextView

        android:id="@+id/titleleftlist"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        

         />

    <TextView

        android:id="@+id/infoleftlist"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

         

         />

</LinearLayout>

 界面展示如下:

Android手机文件管理

你可能感兴趣的:(android)