初探ListView

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

建立简单的ListView

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

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

  

1 private String[] data = { "Apple", "Banana", "Orange", "Watermelon",
2 "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };
3
4
5 ArrayAdapter<String> adapter = new ArrayAdapter<String>(
6 MainActivity.this, android.R.layout.simple_list_item_1, data);
7 ListView listView = (ListView) findViewById(R.id.list_view);
8 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;

 2
 3 /**
 4  * Created by Ran on 2016/3/21.
 5  */
 6 public class MyData
 7 {
 8     private  String name; 
 9     private  int    imageId;  
10
11     public  MyData(String name,int imageId)
12     {
13         this.name = name;
14         this.imageId = imageId;
15     }
16     public String getName() {
17         return name;
18     }
19     public int getImageId() {
20         return imageId;
21     }
22 }

imageId是对应图片的资源ID

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent">
 5
 6     <ImageView
 7         android:id="@+id/iimage"
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content" />
10
11     <TextView
12         android:id="@+id/iname"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         />
16 </LinearLayout>
 1 package com.example.ran.listviewdemo;
 2
 3 import android.content.Context;
 4 import android.view.LayoutInflater;
 5 import android.view.View;
 6 import android.view.ViewGroup;
 7 import android.widget.ArrayAdapter;
 8 import android.widget.ImageView;
 9 import android.widget.TextView;
10
11 import java.util.List;
12
13 /**
14  * Created by Ran on 2016/3/21.
15  */
16 public class MyDataAdapter extends ArrayAdapter<MyData> {
17     private  int  resourceId;
18
19     public  MyDataAdapter(Context context, int textViewResourceId,List<MyData> objects)
20     {
21         super(context, textViewResourceId, objects);
22         resourceId = textViewResourceId;
23     }
24
25     @Override
26     public  View getView(int position, View convertView, ViewGroup parent)
27     {
28         MyData myData = getItem(position);
29         View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
30         ImageView iimage = (ImageView) view.findViewById(R.id.iimage);
31         TextView iname = (TextView) view.findViewById(R.id.iname);
32         iimage.setImageResource(myData.getImageId());
33         iname.setText(myData.getName());
34         return view;
35     }
36 }
 1 package com.example.ran.listviewdemo;
 2
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.widget.ListView;
 6
 7 import java.util.ArrayList;
 8 import java.util.List;
 9
10 public class MainActivity extends AppCompatActivity {
11
12     private List<MyData> dataList = new ArrayList<MyData>();
13
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18         initData();
19         MyDataAdapter adapter = new MyDataAdapter(MainActivity.
20                 this,R.layout.data_item,dataList);
21         ListView listView = (ListView)findViewById(R.id.list_view);
22         listView.setAdapter(adapter);
23     }
24
25     private void initData()
26     {
27         MyData t1 = new MyData("你真调皮,来,别BB",R.mipmap.t1);
28         MyData t2 = new MyData("你真调皮,来,别BB",R.mipmap.t2);
29         MyData t3 = new MyData("你真调皮,来,别BB",R.mipmap.t3);
30         MyData t4 = new MyData("你真调皮,来,别BB",R.mipmap.t4);
31         MyData t5 = new MyData("你真调皮,来,别BB",R.mipmap.t5);
32         MyData t6 = new MyData("你真调皮,来,别BB",R.mipmap.t6);
33         MyData t7 = new MyData("你真调皮,来,别BB",R.mipmap.t7);
34         MyData t8 = new MyData("你真调皮,来,别BB",R.mipmap.t8);
35
36         dataList.add(t1);
37         dataList.add(t2);
38         dataList.add(t3);
39         dataList.add(t4);
40         dataList.add(t5);
41         dataList.add(t6);
42         dataList.add(t7);
43         dataList.add(t8);
44
45
46     }
47 }

时间: 2024-10-11 06:13:06

初探ListView的相关文章

javafx之CSS初探

javaFX 可以通过css来设计界面.javafx中的css只是w3c css2.1规范的一个扩展和子集,并不完全支持所有的css特性. javafx中的css元素必须有-fx-前缀. 一.介绍 java8中新增了javafx.css开放了css相关api. 选择器分类: Type选择器:通过Node的getTypeSelector可以获取 id选择器:通过设定id=属性(注意这里的id不是fx:id) styleClass属性: styleClass可以使用class选择器 选择器命名规范:

Android开发之适配器模式初探

我们在开发Android的时候经常通过Adapter把数据和UI对象连接在一起,spinner.ListView之类的控件都可以用适配器来自定义其组建,使其更加丰富.适配器模式是将两个不兼容的类纠合在一起使用,属于结构型,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.简单的来说,就是你有一个机器人是只会踢足球的,另一个机器人只会打篮球的,然后你想有让他既会踢足球又会打篮球,那他的芯片里要将这两种方法都集合在一起,可我们又不知道原来的踢足球和打篮球的方法是怎么写的,也不想改啊

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

C# 将Access中时间段条件查询的数据添加到ListView中

C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加Item. 首先,ListView的Item属性包括Items和SubItems.必须先实例化一个ListIteView对象.具体如下: ListViewItem listViewItem=new ListViewItem(); l

[ ObjectListView ] - ListView的增强控件 - 前言 (翻译)

********************************************************************************** 原  标 题: A Much Easier to Use ListView 原文地址: https://www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView 翻       译: 于国栋 http://www.shannon.net.cn *********

Android ListView工作原理完全解析(转自 郭霖老师博客)

原文地址:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况.ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了. 另外ListView还有一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

360手机助手(二):侧拉栏drawerLayout+Tab+Viewpager+ListView+Pulltorefresh+imageloder

整个项目的框架在ContentPager,要熟悉这个类. 简介 完成侧拉栏的显示,侧拉首页对应的:首页+应用+游戏这3个 tab,包含的知识点有:请求数据 +pullTofresh + ImageLoader +轮播图 + listView 效果图: 侧拉栏的实现 V4包中的DrawerLayout实现侧拉效果,每个侧拉的item对应一个fragment,点击该item时,先把所有的fragment隐藏 + 文字设置未选中,然后才创建对应的fragment并显示 怎么实现侧拉栏的显示与隐藏? 点

ListView

一.ListView入门 1.定义ListView在布局中 2.定义ListView的数据适配器 3.实现baseAdapter的getCount方法和getView方法. 二.ListView的优化 1.缓存对象 //convertView 历史缓存对象 @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv; if(convertView == null){ /