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. MarkWord

    MarkWord - 可发布博客的 Markdown编辑器 代码开源 1 /// <summary> 2 /// 同步呈现 3 /// </summary> 4 /// < ...

  2. NET Core 的 Views

    NET Core 十种方式扩展你的 Views 原文地址:http://asp.net-hacker.rocks/2016/02/18/extending-razor-views.html作者:Jür ...

  3. AndroidAutoLayout 屏幕适配

    https://github.com/hongyangAndroid/AndroidAutoLayout

  4. 如何在XML 加入特殊字符内容 如< >

    XML 文件本身包含了一些预定义的保留字符 如< 标记元素的开始符号等 如果要在属性或者元素的值里面包含类似的这些特殊字符 应该如何处理呢 ? 这时候要用到  <![CDATA[] 这个标 ...

  5. QDialog弹出一个窗口,改变窗口大小

    创建一个QT应用 文件->新建文件或项目 Application->Qt Widgets Application 其他下一步 基类选择QDialog 其他下一步 resize() 改变窗口 ...

  6. schema文件中cube的事实表使用视图方法

    在cube中可以使用查询结果或者视图来当做事实表,其中view的alias相当于表名,这个要和同一个cube中的level的表名对应,代码如下: <Cube name="YHZXZLF ...

  7. [置顶] block一点也不神秘————如何利用block进行回调

    我们在开发中常常会用到函数回调,你可以用通知来替代回调,但是大多数时候回调是比通知方便的,所以何乐而不为呢?如果你不知道回调使用的场景,我们来假设一下: 1.我现在玩手机 2.突然手机没有电了 3.我 ...

  8. Android_按钮被按下效果的实现(selector选择器)

    在很多刚入门的新手在开发实例的过程中,经常会遇到要按下某个ImageView时,需要加入确认感的时候.需要在按下的时候,控制ImageVIew内图片的显示. 在我是新手的时候,也这样做过.所以这里简单 ...

  9. C++ DLL注册

    今天项目中需要用C++实现对几个DLL文件的注册,查了许多资料,总结如下: #include <SHLWAPI.H> #pragma region DLL 注册与反注册 add by wh ...

  10. Gamma网址

    git:https://code.gammainfo.com/ 官网:http://gammainfo.com/