简单说明

  • ListView在android程序中比较常用,在此做一下简单的总结
  • 内容:自定义ListView, 自定义Adapter,ListView滚动事件的应用!

项目结构如下图

aaarticlea/png;base64,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" alt="" />

ListView的使用:

  • 建立一个listView的布局文件,命名为:item_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingTop="16dp">
<LinearLayout
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Hello World" />
</LinearLayout>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="Button" />
</LinearLayout>
</LinearLayout>

大致视图如下

aaarticlea/png;base64,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AJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJLQFAAgCU0BAJJeuwAAQM5rAAAAAAAAAAAA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" alt="" />

  • 创建一个自定义ListView的布局文件:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.linux.listviewscrolltest.MainActivity"> <com.example.linux.listviewscrolltest.linux.CustomListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.example.linux.listviewscrolltest.linux.CustomListView>
</LinearLayout>
  • 建立一个Entity,命名为:PersonEntiry.java,用于显示
package com.example.linux.listviewscrolltest.linux;

/**
* Created by Linux on 2016/3/13.
*/
public class PersonEntiry {
private int imageId;
private String username;
private String password;
private String button; public int getImageId() {
return imageId;
} public void setImageId(int imageId) {
this.imageId = imageId;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getButton() {
return button;
} public void setButton(String button) {
this.button = button;
}
}
  • 建立一个Holder,命名为:PersonViewHolder.java,对应于布局文件中的四个组件
package com.example.linux.listviewscrolltest.linux;

import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView; /**
* Created by Linux on 2016/3/13.
*/
public class PersonViewHolder {
ImageView imageView; TextView textView1; TextView textView2; Button button;
}
  • 创建一个ListView的适配器,命名为PersonAdapter.java, 重写父类的四个方法:
package com.example.linux.listviewscrolltest.linux;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView; import com.example.linux.listviewscrolltest.R; import java.util.List; /**
* Created by 胡红翔 on 2016/3/13.
* function: 自定义ListView的适配器
*
*/
public class PersonAdapter extends BaseAdapter {
List<PersonEntiry> personEntiries;
LayoutInflater inflater; public PersonAdapter(Context context, List<PersonEntiry> personEntiries) {
this.personEntiries = personEntiries;
this.inflater = LayoutInflater.from(context);
} @Override
public int getCount() {
return personEntiries.size();
} @Override
public Object getItem(int position) {
return personEntiries.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
PersonEntiry entity = personEntiries.get(position);
PersonViewHolder holder;
if (convertView == null) {
holder = new PersonViewHolder();
convertView = inflater.inflate(R.layout.item_layout, null);
holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
holder.textView1 = (TextView) convertView.findViewById(R.id.textView1);
holder.textView2 = (TextView) convertView.findViewById(R.id.textView2);
holder.button = (Button) convertView.findViewById(R.id.button);
convertView.setTag(holder);
} else {
holder = (PersonViewHolder) convertView.getTag();
}
holder.imageView.setImageResource(entity.getImageId());
holder.textView1.setText(entity.getUsername());
holder.textView2.setText(entity.getPassword());
holder.button.setText(entity.getButton());
return convertView;
}
}
  • 创建一个自定义的ListView:CustomListView,添加滚动事件:
package com.example.linux.listviewscrolltest.linux;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.AbsListView;
import android.widget.ListView; /**
* Created by Linux on 2016/3/13.
* function: 自定义的ListView
*/
public class CustomListView extends ListView implements AbsListView.OnScrollListener {
private static final String TAG = "MainActivity"; public CustomListView(Context context) {
super(context);
setOnScrollListener(this);
} public CustomListView(Context context, AttributeSet attrs) {
super(context, attrs);
setOnScrollListener(this);
} public CustomListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setOnScrollListener(this);
} @Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// view应该就是可见的View的集合
Log.i(TAG, "state change: " + scrollState + ", view size: " + view.getChildCount());
} @Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
Log.i(TAG, "on scroll: " + firstVisibleItem + ", visible: " + visibleItemCount + " , " + totalItemCount);
}
}
  • 最后在MainActivity中使用自定义的ListView:
package com.example.linux.listviewscrolltest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import com.example.linux.listviewscrolltest.linux.CustomListView;
import com.example.linux.listviewscrolltest.linux.PersonAdapter;
import com.example.linux.listviewscrolltest.linux.PersonEntiry; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity";
private CustomListView listView;
private PersonAdapter personAdapter;
private List<PersonEntiry> personEntiries = new ArrayList<>();
private PersonEntiry entity; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (CustomListView) findViewById(R.id.listView); setData();
initListView();
} // 增加数据
private void setData() {
for (int i = 0; i < 10; i++) {
entity = new PersonEntiry();
entity.setImageId(R.mipmap.ic_launcher);
entity.setUsername("linux: " + i);
entity.setPassword("huhx: " + i);
entity.setButton("刘力: " + i);
personEntiries.add(entity);
}
} // 生成ListView
private void initListView() {
personAdapter = new PersonAdapter(this, personEntiries);
listView.setAdapter(personAdapter);
}
}
  • 为测试方便,附上AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.linux.listviewscrolltest"> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>

实现过程

ListView中比较重要的几个要素:

  • 数据:
  • 适配器adapter:
  • listview:

然后,根据适配器的种类,我们可以把listview分成三种,有ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,而最后一种是专门与数据库连接用的。

链接:

android基础---->ListView的使用的更多相关文章

  1. 【Android基础】listview控件的使用(3)------Map与SimpleAdapter组成的多显示条目的Listview

    前面介绍的两种listview的使用都是最基础的,所以有很大的局限性,比如只能在一个item(即每一行的条目)中显示一个文本信息,这一篇我将介绍Map与SimpleAdapter组成的多显示条目的Li ...

  2. Android基础控件ListView基础操作

    1.简介 基于Android基础控件ListView和自定义BaseAdapter适配器情况下,对ListView的数据删除和添加操作: public boolean add(E e) {//添加数据 ...

  3. 【Android基础】listview控件的使用(4)-----自定义布局的listview的使用

    前面我介绍了listview控件的不同用法,但是这些用法在实际的开发项目中是不足以满足需求的,因为前面的几种用法只能简单的显示文本信息,而且布局都比较单一,很难做出复杂的结果,在实际的开发项目中,90 ...

  4. 【Android基础】listview控件的使用(2)-------继承自ListActivity的普通listview

    由于listview在android控件中的重要性,所以android为我们直接封装了一个类ListviewActivity,直接将listview封装在了activity之中,在本篇中,我将介绍在L ...

  5. 【Android基础】listview控件的使用(1)------最简单的listview的使用

    listview控件是项目开发中最常用的空间之一,我将慢慢推出关于listview的一系列的文章,先从最简单的,系统自带的listview开始吧! 先上效果图: activity_one.xml &l ...

  6. <Android基础>(三) UI开发 Part 2 ListView

    ListView 1)ListView的简单用法 2)定制ListView界面 3)提升ListView的运行效率 4)ListView的点击事件 3.5 ListView 3.5.1 ListVie ...

  7. 安卓Android基础第三天——数据库,ListView

    数据库介绍sqlite问:什么情况下使用数据库?答:有大量相似结构的数据需要存储的时候 数据库的创建定义一个类继承SqliteOpenHelpercontext:上下文name:数据库名字,如&quo ...

  8. Android基础TOP7_1:ListView制作列表

    结构: Activity: activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/r ...

  9. Android之listview && adapter

    今天我们讲的也是非常重要的一个控件listview-最常用也是最难的 一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...

随机推荐

  1. ARTS-week3

    Algorithm 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件 ...

  2. WebPack探索之路(1)

    1. 卸载全局的webpack npm ininstall webpack webpack-cli -g 其中安装webpack-cli 是可以让webpack在命令行中执行.在webpack4.0中 ...

  3. 持续集成学习5 jenkins自动化测试与构建

    一.jenkins参数 1.主要参数类型 2.触发构建参数 3.参数值的使用 4.给git仓库配置参数,让其构建的时候可以选择分支 5.配置password参数 6.添加Choice参数 7.其它好用 ...

  4. java大附件上传,支持断点续传

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  5. 11-ESP8266 SDK开发基础入门篇--软硬件定时器

    https://www.cnblogs.com/yangfengwu/p/11094009.html 定时器有两种,软件定时器和硬件定时器 软件定时器就是靠里面的任务延时实现的,,这样的定时器其实延时 ...

  6. Codevs 1305 Freda的道路(矩阵乘法 DP优化)

    1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...

  7. 深搜的剪枝技巧(三)——Sticks(可行性剪枝、上下界剪枝、最优性剪枝)

    小木棍(最优性剪枝.可行性剪枝) 一.问题描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,已知每段的长都不超过 50 .现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍 ...

  8. log4j 1.2 配置和使用简述

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/log4j_properties_simple_introduct ...

  9. 第12组 Beta冲刺(1/5)

    Header 队名:To Be Done 组长博客 作业博客 团队项目进行情况 燃尽图(组内共享) 展示Git当日代码/文档签入记录(组内共享) 注: 由于GitHub的免费范围内对多人开发存在较多限 ...

  10. 《The Boost C++ Libraries》 第一章 智能指针

    Boost.SmartPointers中提供了多种智能指针,它们采用在智能指针析构时释放内存的方式,帮助管理动态分配的对象.由于析构函数在智能指针生命周期结束时被执行,所以由它管理的动态分配对象可以保 ...