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;@Overrideprotected 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<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData());listView.setAdapter(adapter);mlayout.addView(listView);}
/*** 获取数据* @return List*/
public List<String> getData(){List<String> mlist = new ArrayList<String>();mlist.add("数据项1");mlist.add("数据项2");mlist.add("数据项3");return mlist;
}}

对应的布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:id="@+id/mlayout"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"tools:context="com.example.leiqi.listview.L">
</LinearLayout>

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<Map<String,Object>> list = new ArrayList<Map<String,Object>>();@Overrideprotected 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*/@Overridepublic 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<Map<String,Object>> getdata()
{Map<String,Object> map = new HashMap<String,Object>();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<String,Object>();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<String,Object>();map.put("img",R.drawable.l3);map.put("name","三星 11 5G");map.put("mony", "2669元");map.put("zhe", "9折");list.add(map);
return list;
}
}

对应的布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"android:id="@+id/mlayout2"tools:context="com.example.leiqi.cehua.L2"android:orientation="horizontal"></LinearLayout>

listviewrow.xml 在layout目录下、

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal" android:layout_width="match_parent"android:layout_height="fill_parent"android:background="@drawable/trippoilistviewbg" ><!--用来显示图片--><ImageViewandroid:id="@+id/image"android:layout_width="68dp"android:layout_height="65dp" android:layout_margin="10dp" /><!--手机价格,名称,打折信息--><LinearLayoutandroid:orientation="vertical"android:layout_margin="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/phonename"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/phonemony"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/phoneDiscount"android:textColor="#ffFF0000"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
</LinearLayout>

列表按下、获取焦点、选中时的效果res/drawable/trippoilistviewbg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!--设置按下时的效果--><item android:state_pressed="true" android:drawable="@color/beijin"></item><!--设置选中时的效果--><item android:state_selected="true" android:drawable="@color/beijin1"></item><!--设置选中时的效果--><item android:state_focused="true" android:drawable="@color/beijin2"></item>
</selector>

                     

3.SimpleCursorAdapter

下面的例子是将通讯录中的内容显示在列表中,示例代码如下:
.java 文件
<span style="color:#330000;">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;@Overrideprotected 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);}}
</span>

对应的布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/l3"tools:context="com.example.leiqi.cehua.L3"></LinearLayout>

源码下载地址

【Android 学习】之ListView使用大全相关推荐

  1. Android学习笔记-ListView

    今天主要是学习了ListView控件.先把代码粘一下. package com.eoeAndroid.list; import java.util.ArrayList; import java.uti ...

  2. android学习笔记----ListView和各种适配器简介

    学习笔记 目录 打气筒(LayoutInflater对象)介绍: ArrayAdapter用法: 关于具有自定义 ArrayAdapter 的示例应用见这里: SimpleAdapter用法: 关于L ...

  3. Android学习笔记ListView

    在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等.在Android中通过ListView来实现. ListView 的XML属性 属性名称 描述 android ...

  4. Android学习之——ListView下拉刷新

    背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示.     微博 搜狐新闻 ...

  5. 2月24日android学习笔记——ListView

    ListView 以垂直的形式显示所有的列表项 ListView只是容器,而里面的内容需要Adapter来负责提供每个"列表项"的组件. 在ListView的xml中,可以设置an ...

  6. android创建布局文件,android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  7. Android学习系列(10)--App列表之拖拽ListView(上)

    研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.       鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  8. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  9. 解决Android学习之ScollView嵌套ListView和GridView问题

    Android学习之ScollView嵌套ListView和GridView问题,gridview与这种写法一样 import android.content.Context; import andr ...

最新文章

  1. copyTo函数、随机数产生器 RNG、轮廓的特征矩 Moment、cvGet2D函数
  2. puppet企业架构部署
  3. java.net.SocketException四大异常解决方案
  4. 付费用户减少一成,阅文集团还能否为自己“造血”?
  5. java web导入tomcat_记一次在服务器上导入javaweb 项目的经历---tomcat服务器-Go语言中文社区...
  6. 4.2 算法之数论 185 反正切函数的应用 scratch
  7. 数据结构基础(8) --单链表的设计与实现(1)之基本操作
  8. 信息学奥赛一本通(1317:【例5.2】组合的输出)
  9. jdbc连接对象的获取 20210409233805735
  10. 怎样才能知道自己的手机是否支持北斗导航?
  11. 错误:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
  12. python turtle画彩虹简单_Python基础实例——绘制彩虹(turtle库的应用)
  13. 《算法图解》---笔记
  14. 五线谱音名和组别对照表_钢琴音区名称及琴键名称对照表
  15. 什么是交换机?跟服务器之间有什么联系吗?
  16. 英语口语笔记B1-Unit04.家居生活-02-Buying household products
  17. XCode使用googletest(包括googlemock)
  18. DotEPUB:一键将网页转换成 EPUB 格式电纸书
  19. FMI人工智能与大数据线下沙龙第869期北京场圆满落幕
  20. iOS-通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完

热门文章

  1. FS2111单节锂电池升降压稳压输出3.3V200MA静态电流10UA
  2. 串口连接线的制作方法 com线制作
  3. GAVL073-220v转5v200MA输出非隔离芯片
  4. 计算机程序设计师英语,英文简历:应聘计算机程序设计员
  5. Android 集成新浪微博分享及授权 (上)
  6. 大学招聘 计算机上机考试试题,大学计算机基础上机考试题库
  7. 如何按照某几列值或文件名、Sheet名汇总多个excel文件多个表(多个工作薄,多个Sheet)的和、平均值、排名等等
  8. GSMS软件系统安装教程
  9. 脉冲神经网络原理及应用,脉冲神经网络发展前景
  10. 原创超简单代码(1.15)