SDCard文件列表布局的设计
计应111 杜勇
SDCard文件列表设计属于layout页面布局中的一个典型。其中我们要修改一个布局的文件:main.xml。
将下方的LinerLayout布局代码修改如下:
<LinearLayout android:layout_below="@id/toolbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/contentView">
<ListView android:id="@android:id/list"//这一句为其中的重点,他继承自android.app.listactivity.并且在访问的时候,必须访问:android.R.id.List android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:longClickable="true"/>
</LinearLayout>
其程序编写的代码如下:
1.
public class FileListViewActivity extends Activity implements OnItemClickListener, OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getObjFromID();
FileListAdapter da=new FileListAdapter(this);
lv.setAdapter(da);
lv.setOnItemClickListener(this);
da.scanFiles("/");
btnUp.setOnClickListener(this);
}
ListView lv;
TextView t1;
Button btnUp;
void getObjFromID()
{
t1=(TextView) findViewById(R.id.t1);
lv=(ListView) findViewById(R.id.listView1);
btnUp=(Button) findViewById(R.id.btnUp);
}
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position,long id) {
FileListAdapter da= (FileListAdapter) lv.getAdapter();
File f= da.list.get(position);
if(f.isDirectory())
{
t1.setText(f.getPath());
da.scanFiles(f.getPath());
}
}
@Override
public void onClick(View v) {
FileListAdapter da= (FileListAdapter) lv.getAdapter();
if(da.currPath.equals("/")) return;
File f=new File(da.currPath);
t1.setText(f.getParent());
da.scanFiles(f.getParent());
}
}
2.
public class FileListAdapter extends BaseAdapter {
public Activity activity; //创建View时必须要提供Context
public List<File> list=new LinkedList<File>(); //数据源
public String currPath;
public FileListAdapter(Activity activity) {
this.activity = activity;
}
public void scanFiles(String path)
{
list.clear();
File dir=new File(path);
File[] subFiles=dir.listFiles();
if(subFiles!=null)
for(File f:subFiles)
list.add(f);
this.notifyDataSetChanged();
currPath=path;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v=View.inflate(activity, R.layout.item, null);
TextView txtName= (TextView) v.findViewById(R.id.txtName);
ImageView imgIcon=(ImageView) v.findViewById(R.id.imgIcon);
File f=list.get(position);
txtName.setText(f.getName());
Bitmap bmp_folder=BitmapFactory.decodeResource(
activity.getResources(),R.drawable.folder);
Bitmap bmp_file=BitmapFactory.decodeResource(
activity.getResources(),R.drawable.file);
if(f.isDirectory())
imgIcon.setImageBitmap(bmp_folder);
else
imgIcon.setImageBitmap(bmp_file);
return v;
}
}
3.
public class FileBean implements Comparator<Object>{
private File file; // 文件
private Bitmap icon;// 文件图标
private String name;// 文件名
private String path;// 文件路径
private String size;// 文件大小
private String type;// 文件类型
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public Bitmap getIcon() {
return icon;
}
public void setIcon(Bitmap icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getFileSize() {
return size;
}
public void setFileSize(String fileSize) {
this.size = fileSize;
}
public String getFileStyle() {
return type;
}
public void setFileStyle(String style) {
this.type = style;
}
@Override
public int compare(Object object1, Object object2) {
FileBean file1 = (FileBean)object1;
FileBean file2 = (FileBean)object2;
return file1.getName().compareToIgnoreCase(file2.getName());
}
}
运行程序效果如图所示:
此处程序已经完结。从这次的程序编写中,遇到了许多许多的问题,很多错误。不能在很短的时间之内解决掉,于是在百度搜索都搜索了很久,看了一些例题之后,才算是勉强解决了这些问题。就如同我们学校的万青老师所言:我们学习的过程中不能只是一味的去做,要想做一个优秀的程序员,我们更加应该多练习语言表达的能力,不然,连这么去百度搜索但你都不知道,只能是停留在一个初级编程员的水平,永远达不到经理的程度。所以我们想要往上走,那就必须要锻炼自己的口语交际,使得自己成为一根能够无限上升的人,就算说错了也没关系,俗话说得好:'只要你敢想,世界就是你的。”然而从中我们也应该学到努力和坚持不懈的精神,这也是成功的关键所在。