map.put("info", files[i].getPath());
if (files[i].isDirectory()) // 按不同类型显示不同图标
map.put("img", R.drawable.ex_folder);
else
map.put("img", R.drawable.ex_doc);
list.add(map);
}
}
return list;
}
// 响应用户点击列表项的事件
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.d("MyListView4-click", (String) mData.get(position).get("info"));
if ((Integer) mData.get(position).get("img") == R.drawable.ex_folder) {
mDir = (String) mData.get(position).get("info");
mData = getData(); //点击目录时进入子目录
MyAdapter adapter = new MyAdapter(this);
setListAdapter(adapter);
} else { // 点击文件时关闭文件管理器,并将选取结果返回
finishWithResult((String) mData.get(position).get("info"));
}
}
public final class ViewHolder { // 定义每个列表项所含内容
public ImageView img; // 显示图片ID
public TextView title; // 文件目录名
public TextView info; // 文件目录描述
}
public class MyAdapter extends BaseAdapter { // 实现列表内容适配器
private LayoutInflater mInflater;
public MyAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
public int getCount() { // 获取列表项个数
return mData.size();
}
public Object getItem(int arg0) {
return null;
}
public long getItemId(int arg0) {
return 0;
}
// 设置每个列表项的显示
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.listview, null); // 设置列表项的布局
holder.img = (ImageView) convertView.findViewById(R.id.img);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.info = (TextView) convertView.findViewById(R.id.info);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.img.setBackgroundResource((Integer) Data.get(position).get(
"img")); // 根据位置position设置具体内容