android中ListActivity的使用
16lz
2021-01-26
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;
}
}
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;
}
}
更多相关文章
- Android(安卓)UI学习 - Menu
- Android(安卓)NDK开发指南---Android.mk文件
- android之DEX文件格式
- Errors排解
- 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接
- Android(安卓)JNI HelloWorld实现
- Android(安卓)软件安装程序(*.apk)的结构分析、反编译以及汉化
- android安卓系统上运行jar文件
- Android(安卓)Studio SVN配置忽略文件