ListView可能是Android开发中最常用的一个控件,但要用的纯熟还需要不断的锻炼。

建立简单的ListView

  1.在布局文件(.xml)中添加<ListView>标签

  2.在MainActivity.java中用适配器绑定

  

 private String[] data = { "Apple", "Banana", "Orange", "Watermelon",
"Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1, data);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);

  可以看到 数组内容无法直接加到ListView中,所以要用适配器。

  适配器中我用到了String来显示字符串,在往后这里可能会加入更复杂的内容,比如复合类型数据。

  ArrayAdapter有多个构造函数,我这里的值分别是:调用的类,ListView的样式与数据来源。

  简而言之,数据源是多样的,要想把他显示到ListView上,我们要使用适配器。

建立带图片的ListView

1.建立一个用于保存复合类型的类

2.创建1相应的布局文件

3.给1建立专用的适配器(extends ArrayAdapter)

4.在MainActivity中为ListView绑定适配器 1 package com.example.ran.listviewdemo;


/**
* Created by Ran on 2016/3/21.
*/
public class MyData
{
private String name; 
private int imageId;   public MyData(String name,int imageId)
{
this.name = name;
this.imageId = imageId;
}
public String getName() {
return name;
}
public int getImageId() {
return imageId;
}
}

imageId是对应图片的资源ID

 <?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"> <ImageView
android:id="@+id/iimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/iname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
 package com.example.ran.listviewdemo;

 import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView; import java.util.List; /**
* Created by Ran on 2016/3/21.
*/
public class MyDataAdapter extends ArrayAdapter<MyData> {
private int resourceId; public MyDataAdapter(Context context, int textViewResourceId,List<MyData> objects)
{
super(context, textViewResourceId, objects);
resourceId = textViewResourceId;
} @Override
public View getView(int position, View convertView, ViewGroup parent)
{
MyData myData = getItem(position);
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
ImageView iimage = (ImageView) view.findViewById(R.id.iimage);
TextView iname = (TextView) view.findViewById(R.id.iname);
iimage.setImageResource(myData.getImageId());
iname.setText(myData.getName());
return view;
}
}
 package com.example.ran.listviewdemo;

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity { private List<MyData> dataList = new ArrayList<MyData>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
MyDataAdapter adapter = new MyDataAdapter(MainActivity.
this,R.layout.data_item,dataList);
ListView listView = (ListView)findViewById(R.id.list_view);
listView.setAdapter(adapter);
} private void initData()
{
MyData t1 = new MyData("你真调皮,来,别BB",R.mipmap.t1);
MyData t2 = new MyData("你真调皮,来,别BB",R.mipmap.t2);
MyData t3 = new MyData("你真调皮,来,别BB",R.mipmap.t3);
MyData t4 = new MyData("你真调皮,来,别BB",R.mipmap.t4);
MyData t5 = new MyData("你真调皮,来,别BB",R.mipmap.t5);
MyData t6 = new MyData("你真调皮,来,别BB",R.mipmap.t6);
MyData t7 = new MyData("你真调皮,来,别BB",R.mipmap.t7);
MyData t8 = new MyData("你真调皮,来,别BB",R.mipmap.t8); dataList.add(t1);
dataList.add(t2);
dataList.add(t3);
dataList.add(t4);
dataList.add(t5);
dataList.add(t6);
dataList.add(t7);
dataList.add(t8); }
}

初探ListView的更多相关文章

  1. 初探ListView和Adapter

    关于Android Adapter(适配器),参考Devin Zhang’s blog.简单的说,Adapter起到的作用是使得前端的显示和后端的数据能够适配,用以下代码作为例子 1234567891 ...

  2. Adapter基本用法

    使用流程 graph LR A(新建适配器) -->B(绑定数据源) B-->C(设置适配器) 1. ArrayAdapter new ArrayAdapter<?>(cont ...

  3. ArrayAdapter、SimpleAdapter简单用法

    1. 使用流程 2. ArrayAdapter new ArrayAdapter<?>(context, textViewResourceId, objects)   context:上下 ...

  4. ListView初探

    一.ListView介绍 在Android开发中ListView是比较常用的控件,常用于以列表的形式显示数据集及根据数据的长度自适应显示. ListView通常有两个主要功能点: (1)将数据集填充到 ...

  5. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

  6. Android开发学习之路-RecyclerView使用初探

    在进行一些MaterialDesign规范开发的时候,比如之前说到的CoordinateLayout实现的向上折叠效果的时候,如果依然使用ListView,那么这种效果是做不出来的,因为ListVie ...

  7. Xamarin.Forms 初探

    什么是 Xamarin Forms ? Xamarin Forms 是一个高效创建跨平台用户界面的库 .通过Xamarin Forms 能够一次编码生成基于主流移动平台(iOS, Android, W ...

  8. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探         最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感 ...

  9. 张高兴的 UWP 开发笔记:横向 ListView

    ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...

随机推荐

  1. windows常用环境变量

    %ALLUSERSPROFILE%列出所有用户Profile文件位置. %APPDATA%列出应用程序数据的默认存放位置. %CD%列出当前目录. %CLIENTNAME%列出联接到终端服务会话时客户 ...

  2. dell PowerEdge R720 自动重启分析

    dell PowerEdge R720 自动重启分析 摘要: 一,问题描述: 在同一批服务器当中,碰到这样一台服务器,如果不跑任何服务时没有问题,但一跑任务就是自动重启.既然同样的系统别的服务器都没出 ...

  3. C语言入门(1)——C语言概述

    1.程序与编程语言 我们使用计算机离不开程序,程序告诉计算机应该如何运行.程序(Program)是一个精确说明如何进行计算的指令序列.这里的计算可以是数学运算,比如通过一些数学公式求解,也可以是符号运 ...

  4. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  5. Pro Android学习笔记(十一):了解Intent(中)

    Intent的构成 Intent能够带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name).一个inte ...

  6. Linux 文件内容转码

    文件内容的转换: iconv -f GB2312 -t UTF-8 gb1.txt >gb2.txt-f, –from-code=名称 原始文本编码-t, –to-code=名称 输出编码-o, ...

  7. wcf客户端 cookie

    public class CookieBehavior:IEndpointBehavior { private string _cookie; #region 构造函数 重载+2 public Coo ...

  8. JavaSE复习日记 : 接口

    /* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...

  9. Java 内省机制

    一.内省 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法.JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的 ...

  10. Mysql 批量杀死进程

    正常情况下kill id,即可,但是有时候某一异常连接特别多的时候如此操作会让人抓狂,下面记录下小方法: use information_schema; select concat('kill ',i ...