1、listView的xml

2、listVIew的每各Item的布局xml

3、创建一个adapter继承BaseAdapter

4、将数据绑定到视图

   adapter的代码样例:

public class MyAdapter extends BaseAdapter{private LayoutInflater mInflater;private List<Map<String,Object>> list;public MyAdapter(Context context , List<Map<String,Object>> list){this.mInflater = LayoutInflater.from(context);this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = mInflater.inflate(R.layout.list_item, null);holder.name = (TextView)convertView.findViewById(R.id.tv1);holder.age = (TextView)convertView.findViewById(R.id.tv2);holder.pic = (ImageView)convertView.findViewById(R.id.iv1);convertView.setTag(holder);}else{holder = (ViewHolder)convertView.getTag();}holder.name.setText((String)list.get(position).get("name"));holder.age.setText((String)list.get(position).get("age"));holder.pic.setBackgroundResource((Integer)list.get(position).get("pic"));return convertView;}public final class ViewHolder{public TextView name;public TextView age;public ImageView pic;}}

5、在activiity里面如何调用listVIew

//引用listVIew
listview = (ListView)findViewById(R.id.mylistview);
//创建adapter,传值
MyAdapter myAdapter = new MyAdapter(this,putData());
//适配
listview.setAdapter(myAdapter);

listView和spinner的监听区别:

ListView的监听器与Spinner的监听器的区别:
Spinner是:setOnItemSelectedListener
ListView是:setOnItemClickListener
这两个监听器是否可以互换使用呢?
在Spinner中使用OnItemClickListener会异常。java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner。而如果在ListView中使用OnItemSelectedListener,则没有反应,也就是说该监听器不会被触发执行;
OnItemSelectedListener 监听器的回调方法中,parent.getSelectedItem()和parent.getItemAtPosition(position)都能返回object对象。而OnItemClickListener监听器的回调方法中parent.getSelectedItem()只能返回null。

以下是ListView的一些设置:设置项目分割线:

android:divider="@android:color/darker_gray"
android:dividerHeight="10dp"

隐藏ListView的滚动条;

android:scrollbars="none"

设置ListView的Item点击效果:

android:listSelector="RGB值"

设置ListView显示在第几页:

listView.setSelection(N);

平滑显示:

mListView.smoothScro;lBy(distance,duiration);
mListView.smoothScrollByoffset(offset);
mListView.smoothScrollToPosition(index);

代码实例:


public class MyListView extends ListView{private  int mMaxOvewDistance=100;public MyListView(Context context, AttributeSet attrs) {super(context, attrs);DisplayMetrics metrics=context.getResources().getDisplayMetrics();float  density=metrics.density;mMaxOvewDistance=(int) (density*mMaxOvewDistance);}public MyListView(Context context) {super(context);}public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX,mMaxOvewDistance, isTouchEvent);}
}

上边参数表示可以沿着Y轴滑动的距离。

1、OnTouchListener事件

OnTouchListener是View自带的监听事件,我们一般监听ACTION_DOWN(按下状态),ACTION_UP(抬起状态)与ACTION_MOVE(移动状态)三个状态的坐标,就能够判断ListView是上滑还是下滑。相应事件如下:

View.OnTouchListener myTouchListener = new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:break;case MotionEvent.ACTION_MOVE:break;case MotionEvent.ACTION_UP:break;}return false;}};

2、OnScrollListener事件

  OnScrollListener事件是ListView自带的事件,他封装了很多与ListView相关信息,用起来十分灵活。我们来看看它的使用方法。代码如下:

mListView.setOnScrollListener(new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {switch (scrollState){case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:break;case AbsListView.OnScrollListener.SCROLL_STATE_FLING:break;case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:break;}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}});

我们观察这个OnScrollListener事件中有两个回调方法——OnScrollStateChanged()和OnScroll()。

我们来看看第一个方法OnScrollStateChanged(),这个方法根据scrollState(滚动状态)来确定其回调的次数。其中ScrollState有三种模式:

  OnScrollListener.SCROLL_STATE_IDLE——滚动停止时。

  OnScrollListener.SCROLL_STATE_TOUCH_SCROLL——正在滚动时。

  OnScrollListener.SCROLL_STATE_FLING——手指用力滚动时,即用户离开以后,即ListView由于惯性会继续滚动一段时间。

3、item的监听事件

点击事件(OnItemClickListener)

onItemClick(AdapterView<?> parent, View view, int position, long id)

  parent:官方解释为:The AdapterView where the click happened,也就是用户所点击的AdapterView,这个参数一般不用。

  view:当前点击的列表项所对应的布局View对象,可通过这个参数获得相应的列表项内部的组件,进而对其进行操作。举个例子,假设有一个ListView,含有4个列表项,你点了第2个,那么通过view你就可以操作第2个列表项里面的TextView、ImageView等等的组件(假设存在)。

  position:当前点击的列表项的位置,从0开始,也就是点击第n个,position就是n-1。

  id:当前点击的列表项的序号,也是从0开始,一般情况下position和id是一样的。

listview的简单实现相关推荐

  1. Android—— ListView 的简单用法及定制ListView界面

    一.ListView的简单用法 2. 训练目标 1) 掌握 ListView 控件的使用 2) 掌握 Adapter 桥梁的作用 实现步骤: 1)首先新建一个项目, 并让ADT 自动帮我们创建好活动. ...

  2. ListView的简单应用(一)

    犹豫了几天,觉得还是把这个教程写一下吧.虽然在网上已经一大堆了,但是这是我学习的历程我觉得我还是该记录下来,以后也可以温故而知新. ListView在Android众多控件中占有比较重要的地位,也是面 ...

  3. React Native学习之 ListView 的简单使用

    官方文档详细的介绍了ListView的使用方式. 在这里我简单的进行了实践,拉取网络数据进行显示,触底自动加载更多.代码非常简单,这里直接贴出来. import React, { Component ...

  4. C# 系统应用之ListView实现简单图片浏览器

    最近有同学问我如何使用ListView加载图片列表,前面在"C#系统应用"中TreeView+ListView+ContextMenuStrip控件实现树状图显示磁盘目录,并在Li ...

  5. ListView原理简单介绍(着重介绍getView被调用的一系列过程)

    今天出去面试,被面试官问到一个问题,说是如果使用 LayoutInflate.inflate(int resource, ViewGroup root, boolean attachToRoot);这 ...

  6. ListView制作简单表格

    1.ArrayAdapter 适配器的作用是数据和视图之间的转换 ArrayList<E> data=new ArrayList<E>(); new ArrayAdapter& ...

  7. ListView的简单使用《一》—普通图文展示案例

    ListView是React-Native的核心组件之一,也是我们经常使用的组件之一.用于高效地显示一个可以垂直滚动的变化的数据列表.下面我们用实例来看看怎么简单的使用ListView. 使用List ...

  8. Android ListView+ArrayAdapter简单用法

    ListView+ArrayAdapter可以几行代码实现一个简单的列表,不用再写一个复杂的继承BaseAdapter的Adapter 最简单的示例 直接用android自带的item布局,几行代码搞 ...

  9. AutoCompleteTextView+Okhttp3+ListView实现简单的网络数据搜索展示

    首先用OKHttp3获取网络上的数据,并保存到Serializeable的Bean类集合 OkHttpClient client = new OkHttpClient();Request reques ...

  10. 使用listview实现简单的图书管理

    在主类布局文件中只需要一个listview即可 <?xml version="1.0" encoding="utf-8"?> <LinearL ...

最新文章

  1. 【转载】ftp获取文件
  2. python3字符串的常见操作
  3. java图片转ascii字符画(转载)
  4. Asp.Net Core Identity 骚断腿的究极魔改实体类
  5. 云南河道 kml文件_处理能力提升 4 倍 ,大疆智图 4 天完成 5 公里河道建模
  6. ReportViewer教程(1)-新建工程,添加Form和报表浏览器
  7. 如何把备份的bak还原到新的数据库
  8. 大团圆结局!苹果高通和解:双方撤销全球所有诉讼
  9. Json Datable Convert
  10. javascript学习之数组的使用四 concat方法 join方法 reverse方法 sort方法
  11. 分层导航and隐藏导航
  12. 使用IAR下载烧录调试
  13. audioread函数未定义_为什么运行时提示未定义函数或变量 'wavread'。
  14. [网络工程师]-IEEE 802.3定义的传输介质特性
  15. LeetCode231打家劫社Ⅱ(动态规划)
  16. ::before和::after伪元素的使用及优惠券案例
  17. 4399 面试笔试题
  18. BUG解决记录--iOS13中iPhoneX系统右箭头出现黑框
  19. 关系型数据库分库分表中间件之选型
  20. 无线通信中的“钻地术”——MESH自组网地铁透地无线通信

热门文章

  1. 初始化参数文件修改错误导致Oracle无法startup
  2. 在 Xcode 中进行自动化测试 (2/2)
  3. lambda表达式对比
  4. c语言10-100000取整数,100个C语言地编程题.docx
  5. python 输入密码不显示_Python开发实例:隐藏输入密码时屏幕回显
  6. 米的换算单位和公式_小学三年级数学常用公式和单位换算,孩子复习宝典!
  7. 川大计算机专业导师冯子亮,问问川大计算机研究生招收的小专业有哪些
  8. jwt token 附加用户信息_获取jwt(json web token)中存储的用户信息
  9. 温度转换的python程序_人生苦短,请用Python!
  10. 高清壁纸|海贼王漫画名场面