ListActivity的使用
ListActivity非常有用,本人学习了好长时间才稍有了解,首先谢谢各位网友的分享,从中学到了很多。现在把自己所学也发一下下。
在使用ListActivity时可以不设置setContentView();

private String []cities = {"Hangzhou","Xuzhou","Suzhou","ShangHai"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);

ArrayAdapter adapter = new ArrayAdapter(
this,
android.R.layout.simple_list_item_1,//①
cities
);

this.setListAdapter(adapter);
}

注意①出,这里是行的样式,为系统自定意得,我们可以自己修改。下面做一个简单的文件管理的例子。代码先贴上,实例可以到下面下载。



package com.test.activity;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;

import com.test.adapter.FileArrayAdapter;

public class ListSDCardActivity extends ListActivity {
/** Called when the activity is first created. */

//声明设配器
private FileArrayAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);

//显示根目录下的文件和文件夹
String rootPath = "/";
File rootFile = new File(rootPath);
//得到当前目录的所有文件
List<File> listFiles = listFiles(rootFile);
//显示界面
showActivity(listFiles);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
//获得被点击项所代表的File对象
File file = adapter.getItem(position);
if(file.isDirectory()){
List<File> files = listFiles(file);
if(files != null){
adapter = new FileArrayAdapter(this, R.layout.row,files);
this.setListAdapter(adapter);
}
}
super.onListItemClick(l, v, position, id);
}


//显示设置
private void showActivity(List<File> listFiles) {
adapter = new FileArrayAdapter(this, R.layout.row, listFiles);

this.setListAdapter(adapter);
}

/**
* 显示当前目录下的所有文件以及目录
* @param currentFile
* @return
*/
private List<File> listFiles(File currentFile) {
List<File> listFiles = null;
//得到文件的数组
File files[] = currentFile.listFiles();

if(files != null){
listFiles = new ArrayList<File>();
//将当前目录名加入
listFiles.add(currentFile);
//将currentFile的父目录加入listFiles
if(currentFile.getParent() != null)
listFiles.add(currentFile.getParentFile());

//将files[]加入到listFiles[]中
for(File f : files){
listFiles.add(f);
}
}
return listFiles;
}





}




package com.test.adapter;

import java.io.File;
import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class FileArrayAdapter extends ArrayAdapter<File> {

public FileArrayAdapter(Context context, int resource,
List<File> objects) {
super(context, resource, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);

/**
* T getItem(); 他返回的是Adapter中传入的类型
*/
File file = this.getItem(position); //获得当前的 文件对象 ???????????????
//设置View的内容
if(position == 0){
System.out.println(file.getName());
view.setText("当前目录:" + file.getAbsolutePath());
}else if(position == 1 && !isRoot(file)){
view.setText("父目录:" + file.getAbsolutePath());
}else{
if(file.isDirectory()){
view.setText("+\t" + file.getName());
}else{
view.setText("-\t" + file.getName());
}
}

return view;
}

private boolean isRoot(File file){
return getItem(0).getParent() == null;
}

}

更多相关文章

  1. Android(安卓)UI学习 - Menu
  2. Android(安卓)NDK开发指南---Android.mk文件
  3. android之DEX文件格式
  4. Errors排解
  5. 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接
  6. Android(安卓)JNI HelloWorld实现
  7. Android(安卓)软件安装程序(*.apk)的结构分析、反编译以及汉化
  8. android安卓系统上运行jar文件
  9. Android(安卓)Studio SVN配置忽略文件

随机推荐

  1. android studio每次启动都要在fetching A
  2. Android——四大组件、六大布局、五大存
  3. 自定义ListView分割线
  4. Android事件分发机制完全解析(二)
  5. Android基础学习【历史流程重走】 ---- A
  6. achartengine(Google给android提供的绘图
  7. Android添加自定义系统服务
  8. Android开发Tips(3)
  9. android loginDemo +WebService用户登录
  10. android 实现指定wifi切换