Android学习之路之ListView的使用

学习android三天了,发现这个ListView在android里应用非常的多,于是就花了一些时间仔细学习了一下!

以下是我个人的理解,如果有错误或不周到的地方,还请各位看客留言!有错误才有进步,这是我的名言!!!呵呵!

简单的介绍以下,ListVeiw就像一个对象集合,可以将数据一列一列的显示出来,而且可以添加点击事件,非常方便用户操作

手机自带的系统用的比较多

比如手机的设置界面:

*布局设计

这样的界面需要两个Layout制作,一个就是MainLayout,里面包含一个ListView

代码如下:

<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:orientation="vertical"
>
	<ListView
	    android:id="@+id/listview"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    />
</LinearLayout>

这个就相当于一个空集合

下面是PerListViewLayout,里面是每一条数据的样式

代码如下:

<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:orientation="horizontal"
>

    <ImageView
        android:id="@+id/imageViewId"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/ic_launcher"
        />

    <TextView
        android:layout_width="20dp"
        android:layout_height="wrap_content"
        />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:id="@+id/textviewId1"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:textSize="30sp"
            android:text="content1"
            />
        <TextView
            android:id="@+id/textviewId2"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="content1"
            />
    </LinearLayout>
</LinearLayout>

对应的界面如下:

大概可以分成这几个部分:

这个可以成为每一列数据的样式与布局

以后MainLayout里面的每条数据都会以这样的方式显示出来

* 数据源的创建

首先要取出数据,及要显示几条数据

穿件三个数组,分别存入imageView、textView1、textView2

代码如下:

private int[] picts = {R.drawable.ic_launcher, R.drawable.pict1, R.drawable.pict2, R.drawable.dog_bew};
	private String[] contents1 = {"zhangsan", "lisi", "wangwu", "wangliu"};
	private String[] contents2 = {"zhangsan_1", "lisi_1", "wangwu_1", "wangliu_1"};

图片资源的id,textView1的内容,textView2的内容。一一对应

将数据存入List里

代码如下:

// 创建数据源
		List<Map<String, Object>> data;
		data = new ArrayList<Map<String,Object>>();
		for (int i = 0; i < picts.length; i++)
		{
			Map<String,Object> oneLine = new HashMap<String, Object>();
			oneLine.put("pict", picts[i]);
			oneLine.put("contents1", contents1[i]);
			oneLine.put("contents2", contents2[i]);

			data.add(oneLine);
		}

这里用List<Map<String,Objuct>>最好

开始创建自定义适配器

代码如下:

	class MyAdapter extends SimpleAdapter
	{

		public MyAdapter(Context context, List<? extends Map<String, ?>> data,
				int resource, String[] from, int[] to) {
			super(context, data, resource, from, to);
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View view =  super.getView(position, convertView, parent);

			ImageView imageview = (ImageView)view.findViewById(R.id.imageViewId);
			TextView textview1 = (TextView)view.findViewById(R.id.textviewId1);
			TextView textview2 = (TextView)view.findViewById(R.id.textviewId2);
			imageview.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View arg0) {
					Toast.makeText(ListViewActivity3.this, "点击的是图片", Toast.LENGTH_SHORT).show();
				}
			});
			textview1.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View arg0) {
					Toast.makeText(ListViewActivity3.this, "点击的是文字1", Toast.LENGTH_SHORT).show();
				}
			});
			textview2.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View arg0) {
					Toast.makeText(ListViewActivity3.this, "点击的是文字2", Toast.LENGTH_SHORT).show();
				}
			});
			// 实现事件。。。
			return view;
		}

	}

注意上面的view,事件是点击MainLayout获取PerListViewLayout里的各个控件的id和文本

创建适配器

代码如下:

	// 创建适配器
		MyAdapter adapter = new MyAdapter(ListViewActivity3.this, data, R.layout.listview_one_linex, from, to);
		listview.setAdapter(adapter);

		listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int position,
					long arg3) {
				Toast.makeText(ListViewActivity3.this, "第"+ (position+1) + "行", Toast.LENGTH_SHORT).show();

			}
		});

开始看看from和to参数,

context - The context where the View associated with this SimpleAdapter is running
data - A List of Maps. Each entry in the List corresponds to one row in the list. The Maps contain the data for each row, and should include all the entri<span style="white-space:pre">	</span>es specified in "from"
resource - Resource identifier of a view layout that defines the views for this list item. The layout file should include at least those named views defin<span style="white-space:pre">	</span>ed in "to"
from - A list of column names that will be added to the Map associated with each item.
to - The views that should display column in the "from" parameter. These should all be TextViews. The first N views in this list are given the values of t<span style="white-space:pre">	</span>he first N columns in the from parameter.

英文看不懂,自己看吧,我的理解就是 一一对应关系

这样定义:

private String[] from = {"pict","contents1","contents2"};
	private int[] to = {R.id.imageViewId, R.id.textviewId1, R.id.textviewId2};

下面是我做的图

这个是我自己的理解,肯定有很多地方不合理,我自己是懂了!!!!

时间: 2025-01-11 15:18:52

Android学习之路之ListView的使用的相关文章

Android学习之路(转载)

原文地址:http://stormzhang.github.io/android/2014/07/07/learn-android-from-rookie/ 硬件 电脑–推荐Mac 首先声明我不是果粉,个人Windows,Linux,Mac OX系统均用过, 只能说Windows上面的开发工具简直难以恭维,尤其命令行超级难用,而Linux自己必须得花不少时间在折腾中,更是不适合新手了,Max OS是我认为迄今为止最好用的系统,没有之一, 所以如果你不差钱的话,强烈建议入手一台Mac,推荐Pro系

Android学习之路——Android四大组件之activity(二)

上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据类型的数据.还有一种数据类型是parcelable和serialable 用bundle 传递数据有两种情况,这篇文章就分别从两个方面说明一下. 一.利用bundle传递基本数据类型 1.启动时传递数据,使用intent的put方法,将数据写入bundle中,然后startActivity(inte

android学习--视图列表(ListView和ListActivity)

说明: 视图列表(ListView和ListActivity)与AutoComplete.Spinner类似,它们都需要一个供显示的列表项,可以需要借助于内容Adapter提供显示列表项 创建ListView有两种方式: (1)直接使用ListView进行创建 (2)Activity继承ListActivity ListView的常用XML属性 下面分别用两种方式创建ListView 方式一:直接使用ListView进行创建 (1)   main_activity.xml 下面布局两个listV

Android学习之路——Android四大组件之activity(一)

一.什么是Activity? Activity简单的说就是一个界面,我们在Android手机上看到的每一个界面就是一个activity. 二.Activity的创建 1.定义一个类继承activity,然后在清单文件manifest.xml文件的application节点下注册activity,这个activity就创建成功了. public class MyActivity extends Activity { } 2.清单文件注册activity <application android:a

Android学习之sqlite与listview

在android系统中使用的是sqlite数据库,前面的简易登录系统已经讲述了数据库的应用.本例的重点是实现数据库与listview的绑定.demo的数据是将个人的信息绑定到listview中,并存在sqlite. 1.person类 1 public class PersonInfo 2 { 3 public PersonInfo() 4 { 5 6 } 7 private String name; 8 private int age; 9 public void setNmae(String

Android 学习之路--android基础(三)

Android 学习之路--android基础(三) | Talent?C 盒子 盒子 博客 友链 关于 Posts List 作者Talent?C转载请注明出处 前言 上一篇文章我们介绍了 活动(Activity) 的作用及相关用法,我们知道活动是用来给用户展示 UI界面 的,那么在Android中都有哪些UI控件呢?今天就让我们来简单学习几种常见的 UI控件. 如何编写UI界面? Android Studio中为我们提供两种UI界面的编辑方式, 第一种是通过Android Studio 提供

Android学习----自定义Adapter实现ListView

前言: 对于ListView而言,自定义的Adapter对于显示复杂的界面有很大的灵活性 .使用自定义的Adapter需要继承BaseAdapter,然后重写getCount(),getView(),getItem,getItemId()4个方法.adapter在绘制listview时是先根据getCount()获得底层数据的个数来判断绘制item的个数,然后通过getView绘制单个item. ListView实现的效果如下: 详细步骤: 1.新建Activity,在对应的布局文件中放置lis

Android学习之路——简易版微信为例(二)

1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件——Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以

Android学习之路之数据的使用(一)

今天是Android学习第四天,上午简单的学习了数据的存储与使用,在这里把上午的总结一下 数据存储分为四大类: * 文件 * Sharedpreference(参数) * SQLite数据库 * 内容提供者(Content provide) 先来看看前两种方法,文件 和 Sharedpreference 1. 文件 这里的文件和Java里的文件时一模一样的,具体的就不在介绍,看过程 首先在主界面上定义两个按钮,一个是"写文件"一个是"读文件",先写后读 对写文件添加