博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android 学习】之ListView使用大全
阅读量:5938 次
发布时间:2019-06-19

本文共 6578 字,大约阅读时间需要 21 分钟。

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/49204949

Android 学习之ListView使用大全

ListView是列表组件,是android中常用的组件,列表显示信息由三个部分组成。
  • ListView组件。
  • 适配器,用来将用来显示的数据映射到ListView组件中。
  • 列表中要显示的数据。
Listview 的适配器有 ArrayAdapter   SimpleAdapter  SimpleCurdorAdapter。
ArrayAdapter:只显示一行文字。
SimpleAdapter:自定义显示内容。可以有图片、文字,单选框,按钮等。
SimpleCursorAdapter:以列表的形式显示数据库中的内容。例如显示联系人。

1、ArrayAdapter

.java文件
package com.example.leiqi.listview;import android.support.annotation.NonNull;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.LinearLayout;import android.widget.ListView;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/** * ListView的使用ArrayAdapter */public class L extends AppCompatActivity {    private LinearLayout mlayout;    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_l);        mlayout = (LinearLayout) this.findViewById(R.id.mlayout);        listView = new ListView(this);        //创建ArrayAdapter适配器,android.R.layout.simple_expandable_list_item_1:系统定义好的只显示一行文字。        ArrayAdapter
adapter = new ArrayAdapter
(this,android.R.layout.simple_expandable_list_item_1,getData()); listView.setAdapter(adapter); mlayout.addView(listView); }/** * 获取数据 * @return List */public List
getData(){ List
mlist = new ArrayList
(); mlist.add("数据项1"); mlist.add("数据项2"); mlist.add("数据项3"); return mlist;}}
对应的布局文件

2、SimpleAdapter

SimpleAdapter是简单且较为灵活的适配器,可以自定义XML显示每一行数据的内容。可以放图片、按钮、单选框等。
本文示例展示一个手机商品的列表,自定义布局文件listviewrow.xml实现列表中的每一行的不具备,在构建SimpleAdapter对象时加载listviewrow.xml布局,并对相应的列表信息赋值。
.java文件
package com.example.leiqi.cehua;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Objects;/** * */public class L2 extends Activity {    private LinearLayout mlayout;    private ListView mlist;    //创建List对象,用于存放列表项没一行的列表信息    List
> list = new ArrayList
>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_l2); mlayout =(LinearLayout) findViewById(R.id.mlayout2); mlist = new ListView(this); //创建布局参数 LinearLayout.LayoutParams mlistParams = new LinearLayout. LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); //当拖拽列表时现实的颜色默认为黑色,这里设置为白色 mlist.setCacheColorHint(Color.WHITE); //将列表list添加到线性布局mlayout中 mlayout.addView(mlist,mlistParams); /** * 构建SimpleAdapter对象,构造函数共有5个参数 * 第一个参数的含义是上下文Context * 第二个参数的含义是布局资源文件这里自定义的列表项布局文件 * 第三个参数的含义是HashMap中的key信息img,name,money,zhe * 第四个参数的含义是listViewrow.xml 文件中的组件id * 第五个参数的含义是listViewrow.xml 文件中的组件id */ SimpleAdapter adapter = new SimpleAdapter(this,getdata(),R.layout.listviewrow, new String[]{"img","name","mony","Discount"},new int[]{ R.id.image,R.id.phonename,R.id.phonemony,R.id.phoneDiscount}); //为列表添加适配器 mlist.setAdapter(adapter); mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * 单击触发事件 * parent:发生单击事件的Adapterview * view;被单机的View * position:当前单击的行在adapter 的下标 * id:当前单击的行的id */ @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { Toast.makeText(L2.this, "您选择地是"+list.get(position).get("name").toString(),Toast.LENGTH_SHORT).show(); } }); }/** * 获取列表项显示的数据 */public List
> getdata(){ Map
map = new HashMap
(); map.put("img", R.drawable.l1); map.put("name", "摩托罗拉(moto)XT711 5G"); map.put("mony", "2669元"); map.put("zhe", "9折"); list.add(map); map = new HashMap
(); map.put("img", R.drawable.l2); map.put("name", "Iphone 4S 3G"); map.put("mony", "2669元"); map.put("zhe", "9折"); list.add(map); map = new HashMap
(); map.put("img",R.drawable.l3); map.put("name","三星 11 5G"); map.put("mony", "2669元"); map.put("zhe", "9折"); list.add(map);return list;}}
对应的布局文件
listviewrow.xml 在layout目录下、
列表按下、获取焦点、选中时的效果res/drawable/trippoilistviewbg.xml
                     

3.SimpleCursorAdapter

下面的例子是将通讯录中的内容显示在列表中,示例代码如下:
.java 文件
package com.example.leiqi.cehua;import android.app.Activity;import android.database.Cursor;import android.provider.Contacts;import android.support.v4.widget.SimpleCursorAdapter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.LinearLayout;import android.widget.ListAdapter;import android.widget.ListView;/** * */public class L3 extends Activity {private ListView listView;    private LinearLayout mlayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_l3);    mlayout = (LinearLayout) findViewById(R.id.l3);        listView = new ListView(this);        Cursor cursor = getContentResolver().query(Contacts.People.CONTENT_URI,null,null,null,null);        startManagingCursor(cursor);        ListAdapter listAdapter = new SimpleCursorAdapter(this,                android.R.layout.simple_expandable_list_item_1,                cursor,new String[]{Contacts.People.NAME},                new int[]{ android.R.id.text1});        listView.setAdapter(listAdapter);        mlayout.addView(listView);    }}
对应的布局文件
你可能感兴趣的文章
soapUI的简单使用(webservice接口功能测试)
查看>>
框架 Hibernate
查看>>
python-while循环
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
(原創) 如何建立一个thread? (OS) (Linux) (C/C++) (C)
查看>>
<气场>读书笔记
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
ZooKeeper 可视化监控 zkui
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
autoconf,automake,libtool
查看>>
jQuery的技巧01
查看>>
基于泛型实现的ibatis通用分页查询
查看>>