学习笔记ListView初识

  1.ListView的基本使用

作用:android系统中显示列表的控件

  2.两种适配器(ArrayAdapter、simpleAdapter)

数据适配器 是连接数据源和视图界面的桥梁
作用:把复杂的数据(数组、链表、数据库、集合等)填充到指定视图界面上

ArrayAdapter:用于绑定格式单一数据
数据源:集合或者数组
SimpleAdapter:用于绑定格式复杂的数据
数据源:只能是特定泛型的集合
实现过程:新建适配器->添加数据源到适配器->视图加载适配器

使用ArrayAdapter:

package com.drumbass.listviewtest;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity1 extends Activity {
    private ListView listView;
    private ArrayAdapter<String> mArrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView1);
        String mdata[] = { "DrumBass1", "DrumBass2", "DrumBass3", "DrumBass4",
                "DrumBass5" };
        mArrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, mdata);
        listView.setAdapter(mArrayAdapter);

    }

}

使用simpleAdapter:

 1 package com.drumbass.listviewtest;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.widget.ListView;
11 import android.widget.SimpleAdapter;
12
13 public class MainActivity2 extends Activity {
14     private ListView listView;
15     private SimpleAdapter mSimpleAdapter;
16     private List<Map<String, Object>> mDataList;
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         listView = (ListView) findViewById(R.id.listView1);
23         mDataList = new ArrayList<Map<String, Object>>();
24         mSimpleAdapter = new SimpleAdapter(this, getData(), R.layout.item,
25                 new String[] { "pic", "text" },
26                 new int[] { R.id.pic, R.id.text });
27         listView.setAdapter(mSimpleAdapter);
28     }
29     private List<Map<String, Object>> getData(){
30         for (int i = 0; i < 20; i++) {
31             Map<String,Object> map = new HashMap<String,Object>();
32             map.put("pic", R.drawable.ic_launcher);
33             map.put("text", "DrumBass"+i);
34             mDataList.add(map);
35         }
36         return mDataList;
37     }
38
39 }

自定义xml文件:item.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="horizontal" >
 7     <ImageView
 8         android:layout_height="wrap_content"
 9         android:layout_width="wrap_content"
10         android:src="@drawable/ic_launcher"
11         android:id="@+id/pic"
12         />
13     <TextView
14         android:id="@+id/text"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text="DrumBass"
18         android:gravity="center"
19         />
20
21 </LinearLayout>

运行结果:

  3.两种监听器(OnScrollingListener、OnItemClickListener)

  4.适配器数据刷新(notifyDataChanged)

 1 package com.drumbass.listviewtest;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.util.Log;
11 import android.view.View;
12 import android.widget.AbsListView;
13 import android.widget.AbsListView.OnScrollListener;
14 import android.widget.AdapterView;
15 import android.widget.AdapterView.OnItemClickListener;
16 import android.widget.ListView;
17 import android.widget.SimpleAdapter;
18 import android.widget.Toast;
19
20 public class MainActivity2 extends Activity implements OnItemClickListener,
21         OnScrollListener {
22     private ListView listView;
23     private SimpleAdapter mSimpleAdapter;
24     private List<Map<String, Object>> mDataList;
25
26     @Override
27     protected void onCreate(Bundle savedInstanceState) {
28         super.onCreate(savedInstanceState);
29         setContentView(R.layout.activity_main);
30         listView = (ListView) findViewById(R.id.listView1);
31         mDataList = new ArrayList<Map<String, Object>>();
32         mSimpleAdapter = new SimpleAdapter(this, getData(), R.layout.item,
33                 new String[] { "pic", "text" },
34                 new int[] { R.id.pic, R.id.text });
35         listView.setAdapter(mSimpleAdapter);
36         listView.setOnItemClickListener(this);
37         listView.setOnScrollListener(this);
38     }
39
40     private List<Map<String, Object>> getData() {
41         for (int i = 0; i < 20; i++) {
42             Map<String, Object> map = new HashMap<String, Object>();
43             map.put("pic", R.drawable.ic_launcher);
44             map.put("text", "DrumBass" + i);
45             mDataList.add(map);
46         }
47         return mDataList;
48     }
49
50     @Override
51     public void onScrollStateChanged(AbsListView view, int scrollState) {
52         switch (scrollState) {
53         case SCROLL_STATE_FLING:
54             Log.i("Main", "用户在手指离开之前,用力滑动,视图还在滚动");
55             Map<String, Object> map = new HashMap<String, Object>();
56             map.put("pic", R.drawable.ic_launcher);
57             map.put("text", "TR");
58             mDataList.add(map);
59             mSimpleAdapter.notifyDataSetChanged();
60             break;
61         case SCROLL_STATE_IDLE:
62             Log.i("Main", "视图停止滑动");
63             break;
64         case SCROLL_STATE_TOUCH_SCROLL:
65             Log.i("Main", "视图在滚动");
66             break;
67         }
68     }
69
70     @Override
71     public void onScroll(AbsListView view, int firstVisibleItem,
72             int visibleItemCount, int totalItemCount) {
73
74     }
75
76     @Override
77     public void onItemClick(AdapterView<?> parent, View view, int position,
78             long id) {
79         String text = listView.getItemAtPosition(position) + "";
80         Toast.makeText(this, "position" + position + "text" + text,
81                 Toast.LENGTH_SHORT).show();
82     }
83
84 }


 

终于写完了,虽然都只是笔记,但是花了很多时间。也许是我的学习方法错了? 是不是应该学完后练练再来写? 那样也许效率会高很多,下次试试。
 

时间: 2024-08-07 16:59:06

学习笔记ListView初识的相关文章

[Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法

转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类控件时(比如TextView),注册ListView的监听setOnItemClickListener之后,当点击Item时候会触发onItemClick回调. 但是,当Item中存在Button(继承于Button)的控件时,onItemClick回调不会被触发. 解决方案: 在Item的布局文件

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

NuGet学习笔记(1)——初识NuGet及快速安装使用

转自:http://kb.cnblogs.com/page/143190/ 关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的

[转]NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站

NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站

NuGet学习笔记1——初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站

Android学习笔记ListView

在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等.在Android中通过ListView来实现. ListView 的XML属性 属性名称 描述 android:choiceMode 规定此ListView所使用的选择模式.缺省状态下,list没有选择模式.属性值必须设置为下列常量之一: none,值为0,表示无选择模式: singlechoice,值为1,表示最多可以有一项被选中: multichoice,值为2,表示可以多项被选中. android:d

Android学习笔记——ListView

该工程的功能是实现在一个activity中显示一个表格 以下代码是MainActivity.java中的代码 package com.example.listview; import java.util.ArrayList; import java.util.HashMap; import android.app.ListActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuIt

GSON学习笔记之初识GSON

引用"JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,採用全然独立于语言的文本格式.为Web应用开发提供了一种理想的数据交换格式. " 曾经手机端与server数据交互的时候用过xml格式,后来又用了JSON格式,无论是server生成json数据,还是手机端解析json数据,尽管用到一些json库,但都比較繁琐.近期从一些项目中发现了Google的gson,就開始学习使用.经过比較,发现gson与其它json库最大的不同是.gson直接使用