Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1081745
  • 博文数量: 226
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 2504
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-21 14:12
文章分类

全部博文(226)

文章存档

2011年(1)

2010年(2)

2009年(68)

2008年(4)

2007年(27)

2006年(124)

我的朋友

分类: LINUX

2009-05-20 17:17:37


ListActivity是一个绑定到一个数据源,并且用来显示这一串数据的Activity。

ListActivity拥有一个listview对象来实现数据源的绑定与显示,通常会是一个array或者一个拥有查询结果的cursor.

ListActivity本身有一个默认的layout,其中包含一个全屏的list。如果用默认的layout,你必须要在onCreate()中注释掉setContentView()那一句。但是如果你如果你想要定制自己的layout你可以创建一个你自己的layout文件,并且在onCreate()中调用setContenttView()来指定这个layout.,需要注意的是你自己的layout中必须要有一个id为"@android:id/list"的ListView object

 

下面是一个非常简单的listview的例子,用的是默认的layout。



public class ListView15 extends ListActivity {
    private List<String> list = null;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.mainb);

        //above line: setContentView must be commented

        showList();
    }
    
    public void showList()
    {
        list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        ArrayAdapter<String> la = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
        //ArrayAdapter la = new ArrayAdapter(this, R.layout.list_row, list);

        this.setListAdapter(la);
    }
}



接下来会用另一个例子来进一步学习listView,该例子是用来显示你的所有的系统文件:



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

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

public class MyFileList extends ListActivity {
    
    private List<String> items = null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main); //must not do it !!

        fill(new File("/").listFiles(), true);
    }
    
      @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        int selectionRowID = position;//(int) getSelectionRowID();

        if (selectionRowID == 0) {
            fill(new File("/").listFiles(),true);
        } else
        {
            File file = new File(items.get(selectionRowID));
            if (file.isDirectory())
                fill(file.listFiles(), false);
        }
    }
    
 
    public void fill(File[] files, boolean bRootDirectory)
    {
        items = new ArrayList<String>();
        if(!bRootDirectory)
         items.add(getString(R.string.to_top));
        for (File file : files)
            items.add(file.getPath());
        //ArrayAdapter fileList = new ArrayAdapter(this,android.R.layout.simple_list_item_1,items);

        ArrayAdapter<String> fileList = new ArrayAdapter<String>(this,R.layout.file_row, items);
        setListAdapter(fileList);
    }
}

阅读(1550) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-05-22 14:06:58

好服月租型IT服务台登录中国,诚邀阁下莅临体验! 月租型ITSM软件,注册即可使用! 详情请登录官方网站:http://www.servicezon.com