public class FileBaseAdapter extends BaseAdapter {
private static final int TXT_FILE = 1;
private static final int IMAGE_FILE = 2;
private static final int AUDIO_FILE = 3;
private static final int VIDEO_FILE = 4;
private static final int OTHER_FILE = 5;
private static final int FOLDER = 6;
private List<FileVO> list = new ArrayList<FileVO>();
private Context context;
private int resource;
public FileBaseAdapter(Context context, int resource, File[] filearray)
{
this.context = context;
this.resource = resource;
String name;
String path;
int icon;
for (int i = 0; i < filearray.length; i++) {
name = filearray[i].getName();
path = filearray[i].getAbsolutePath();
icon = getIcon(filearray[i]);
FileVO filevo = new FileVO(name,path,icon);
list.add(filevo);
}
System.out.println("FileBaseAdapter............");
}
@Override
public int getCount() {
// TODO Auto-generated method stub
System.out.println("getCount............."+list.size());
return list.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
System.out.println("getItem.............."+position);
return list.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
System.out.println("getItemId............"+position);
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
System.out.println("position:"+position); FileVO filevo = (FileVO)list.get(position);
String name = filevo.getFileName();
String path = filevo.getFilePath();
int icon = filevo.getFileIcon();
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = (View)layoutInflater.inflate(resource, null);
TextView fileName = (TextView)view.findViewById(R.id.filename);
ImageView fileImage = (ImageView)view.findViewById(R.id.fileImage);
fileName.setText(name);
fileImage.setImageResource(icon);
System.out.println("getView====="+name);
return view;
}
//根据File 获得后缀判断文件格式;
private int getFileType(File file) {
if (file.mkdir()) {
return FOLDER;
}
String filename = file.getName();
final String[] txt = { ".txt", ".doc", ".pdf" };
final String[] img = { ".jpg", ".jpeg", ".png", "bmp", ".gif" };
final String[] audio = { ".mp3", ".wav" };
final String[] video = { ".avi", ".mp4", ".rm", ".rmvb", "mkv" };
for (int i = 0; i < txt.length; i++) {
if (filename.endsWith(txt[i]))
return TXT_FILE;
}
for (int i = 0; i < img.length; i++) {
if (filename.endsWith(img[i]))
return IMAGE_FILE;
}
for (int i = 0; i < audio.length; i++) {
if (filename.endsWith(audio[i]))
return AUDIO_FILE;
}
for (int i = 0; i < video.length; i++) {
if (filename.endsWith(video[i]))
return VIDEO_FILE;
}
return OTHER_FILE;
}
//根据文件格式得到相应的图片ID
private int getIcon(File file) {
int type = getFileType(file);
switch (type) {
case TXT_FILE:
return R.drawable.text;
case IMAGE_FILE:
return R.drawable.icon;
case AUDIO_FILE:
return R.drawable.chm;
case VIDEO_FILE:
return R.drawable.ppt;
case FOLDER:
return R.drawable.folder;
case OTHER_FILE:
return R.drawable.word;
}
return 0;
} }
getView中每次System.out.println("position:"+position); 都是同一个position
也显示不出来,为什么啊??新手请教!
private static final int TXT_FILE = 1;
private static final int IMAGE_FILE = 2;
private static final int AUDIO_FILE = 3;
private static final int VIDEO_FILE = 4;
private static final int OTHER_FILE = 5;
private static final int FOLDER = 6;
private List<FileVO> list = new ArrayList<FileVO>();
private Context context;
private int resource;
public FileBaseAdapter(Context context, int resource, File[] filearray)
{
this.context = context;
this.resource = resource;
String name;
String path;
int icon;
for (int i = 0; i < filearray.length; i++) {
name = filearray[i].getName();
path = filearray[i].getAbsolutePath();
icon = getIcon(filearray[i]);
FileVO filevo = new FileVO(name,path,icon);
list.add(filevo);
}
System.out.println("FileBaseAdapter............");
}
@Override
public int getCount() {
// TODO Auto-generated method stub
System.out.println("getCount............."+list.size());
return list.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
System.out.println("getItem.............."+position);
return list.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
System.out.println("getItemId............"+position);
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
System.out.println("position:"+position); FileVO filevo = (FileVO)list.get(position);
String name = filevo.getFileName();
String path = filevo.getFilePath();
int icon = filevo.getFileIcon();
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = (View)layoutInflater.inflate(resource, null);
TextView fileName = (TextView)view.findViewById(R.id.filename);
ImageView fileImage = (ImageView)view.findViewById(R.id.fileImage);
fileName.setText(name);
fileImage.setImageResource(icon);
System.out.println("getView====="+name);
return view;
}
//根据File 获得后缀判断文件格式;
private int getFileType(File file) {
if (file.mkdir()) {
return FOLDER;
}
String filename = file.getName();
final String[] txt = { ".txt", ".doc", ".pdf" };
final String[] img = { ".jpg", ".jpeg", ".png", "bmp", ".gif" };
final String[] audio = { ".mp3", ".wav" };
final String[] video = { ".avi", ".mp4", ".rm", ".rmvb", "mkv" };
for (int i = 0; i < txt.length; i++) {
if (filename.endsWith(txt[i]))
return TXT_FILE;
}
for (int i = 0; i < img.length; i++) {
if (filename.endsWith(img[i]))
return IMAGE_FILE;
}
for (int i = 0; i < audio.length; i++) {
if (filename.endsWith(audio[i]))
return AUDIO_FILE;
}
for (int i = 0; i < video.length; i++) {
if (filename.endsWith(video[i]))
return VIDEO_FILE;
}
return OTHER_FILE;
}
//根据文件格式得到相应的图片ID
private int getIcon(File file) {
int type = getFileType(file);
switch (type) {
case TXT_FILE:
return R.drawable.text;
case IMAGE_FILE:
return R.drawable.icon;
case AUDIO_FILE:
return R.drawable.chm;
case VIDEO_FILE:
return R.drawable.ppt;
case FOLDER:
return R.drawable.folder;
case OTHER_FILE:
return R.drawable.word;
}
return 0;
} }
getView中每次System.out.println("position:"+position); 都是同一个position
也显示不出来,为什么啊??新手请教!
public int getCount() {
// TODO Auto-generated method stub
System.out.println("getCount............."+list.size());
return list.size();
}list 里面有内容吗? getView 会根据 getCount 得到的数量来生成view