ListActivity简单的说就是ListView和Activity的结合,跟ListView和Activity组合实现的没有什么很大的差别,主要是比较方便。
在实现时,要注意:
  • 1、一般情况,ListActivity可以不用setContentView(R.layout.main),它默认是LIstView占满屏。
  • 2、如果想在屏幕中显示其他控件,如文本框和按钮之类,可以采用如下方法:
         2.1、在代码中添加:setContentView(R.layout.main)
         2.2、在 main.xml 文件中,添加一个LIstView控件,和一个 TextView 控件,注意它们 id 必须为"@id/android:list"、"@id/android:empty";前一个表示匹配的ListView,后一个表示若LIstView没有内容则显示的提示。
ListActivity最经典的应用场景

public class MainActivity extends ListActivity {
    private int resource;//布局
    private List<String> mData;//数据
    private ListAdapter mAdapter;//适配器
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        resource = android.R.layout.simple_list_item_1;//最简单的当然是用系统带的布局了
        mData = new ArrayList<String>(Arrays.asList("第一个条目", "第二个条目", "第三个条目", "第四个条目", "第五个条目"));
        mAdapter = new ArrayAdapter<String>(this, resource, mData);
        setListAdapter(mAdapter);
    }
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        switch (position) {
        }

}

}

ListActivity使用代码设置布局

public class MainActivity extends ListActivity {
    private ArrayList<HashMap<String, Object>> mArrayList; //存放文字、图片信息
    private SimpleAdapter mSimpleAdapter; //简单适配器
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        initDatas();
        setListAdapter(mSimpleAdapter);
    }

    private void initDatas() {
        mArrayList = new ArrayList<HashMap<String, Object>>();
        for (int i = 0; i < 5; i++) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("tv_title", "条目 " + i); //文字
            map.put("iv_icon", R.drawable.ic_launcher); //图片   
            mArrayList.add(map);
        }
        //生成适配器的Item和动态数组对应的元素   
        mSimpleAdapter = new SimpleAdapter(this, mArrayList, R.layout.list_item, //Item的布局
                new String[] { "tv_title", "iv_icon" }, new int[] { R.id.tv_title, R.id.iv_icon });
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        setTitle("你点击第" + position + "行");
    }

}


list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal" >
    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="15sp" />

</LinearLayout>


ListActivity使用XML设置布局

public class MainActivity extends ListActivity implements OnClickListener {

    private Button bt_add;
    private EditText et_item;
    private ArrayList<HashMap<String, Object>> mArrayList; //存放文字、图片信息
    private SimpleAdapter mSimpleAdapter; //简单适配器
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);
        bt_add = (Button) findViewById(R.id.bt_add);
        et_item = (EditText) findViewById(R.id.et_item);
        bt_add.setOnClickListener(this);
        initDatas();
    }

    private void initDatas() {
        mArrayList = new ArrayList<HashMap<String, Object>>();
        for (int i = 0; i < 5; i++) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("tv_title", "条目 " + i); //文字
            map.put("iv_icon", R.drawable.ic_launcher); //图片   
            mArrayList.add(map);
        }
        //生成适配器的Item和动态数组对应的元素   
        mSimpleAdapter = new SimpleAdapter(this, mArrayList, R.layout.list_item, 
                new String[] { "tv_title", "iv_icon" }, new int[] { R.id.tv_title, R.id.iv_icon });
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        setTitle("你点击第" + position + "行");
    }

    @Override
    public void onClick(View v) {
        // 向ListView里添加数据
        HashMap<String, Object> map = new HashMap<String, Object>();
        String edit_input;
        if (TextUtils.isEmpty(et_item.getText().toString().trim())) edit_input = "你没输入任何内容";
        else edit_input = et_item.getText().toString().trim();
        map.put("tv_title", edit_input);
        map.put("iv_icon", R.drawable.ic_launcher);
        mArrayList.add(map);
        //点击后才(重新)设置适配器
        this.setListAdapter(mSimpleAdapter);
    }

}


   
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <EditText
        android:id="@+id/et_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="请输入新增条目的标题"
        android:textSize="15sp" >
    </EditText>
    <Button
        android:id="@+id/bt_add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击添加新条目"
        android:textSize="15sp" >
    </Button>
    <ListView
        android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:drawSelectorOnTop="false" />
    <TextView
        android:id="@id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是一个固定id的TextView,当LIstView没有内容时才会显示" />

</LinearLayout>




最新文章

  1. 虚拟机NUMA和内存KSM
  2. Python学习资料整理以及书籍、开发工具推荐
  3. 如何将SD卡或者TF卡的debian系统刷入nand
  4. maven打包无法打包mybatis及系统配置文件问题
  5. C#使用SMTP发送邮件
  6. hdu 2052 Picture(java)
  7. Ant打jar包指定MainClass
  8. DOM事件逐层上机传递
  9. 「Poetize7」电话线路
  10. Eclipse闪退解决办法
  11. MVC之Session State性能
  12. SQLSERVER2014的内存优化表
  13. 【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)
  14. JS的深浅拷贝
  15. Docker学习之2——镜像
  16. H5 60-浮动元素排序规则
  17. PHUML 生成UML类图操作流程
  18. HDU 5360 Hiking (贪心)
  19. 昕有灵犀-xyFS私有文件云存储OSS服务
  20. 详解Linux查看实时网卡流量的几种方式(转)

热门文章

  1. Linux下python3与python3的多版本共存
  2. jQuery中自定义简单动画的实现
  3. extjs combobox 设置下拉时显示滚动条 设置显示条数
  4. extjs中combobox默认显示第一个值
  5. jquery 选项卡实现
  6. jdom学习:读取xml文件
  7. 外卖的撕‘哔’大战 CSU 1559
  8. laravel框架——路由
  9. Java 的性能优化
  10. 转:Stimulsoft Reports.Fx 2013.3新增 Email、AutoPageScale支持以及图表组件Funnel Weighted Slices