Android -- ListView与Adapter

ListView在Android中有着很重要的作用。Android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

背景                                                                                          

建了个Person类,里面有Name,Number,id,三个属性。

private String name;
    private String number;
    private int id;

主要用来向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"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />

</LinearLayout>

直接放listview上去就OK了。

程序                                                                                           

private ListView lv;
   private List<Person> list;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list = new ArrayList<Person>();
        lv = (ListView) findViewById(R.id.lv);
        addPerson();
        lv.setAdapter(new MyAdapter());
    }

    private class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            //返回大小
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO 自动生成的方法存根
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO 自动生成的方法存根
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv = new TextView(getApplicationContext());
            tv.setTextSize(50);
            tv.setTextColor(Color.BLUE);
            Person person = list.get(position);
            tv.setText(person.toString());
            System.out.println("返回位置"+position);
            return tv
        }

    }

    // 添加数据函数
    private void addPerson() {

        for (int i = 0; i < 20; i++) {
            Person person1 = new Person("张三" + i, "12345678912", i);
            list.add(person1);
        }
    }

要申明一个adapter,adapter里面放数据,然后listview通过setAdapter配置adapter。

----------------------------简单的分割线------------------------------------简单的---------------------------

如果需要自定义lixtview中当样式的话,可以仙剑一个布局item的布局。

item布局                                                                                  

<?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="60dip"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tv_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:text="id"
        android:textColor="#ff0000"
        android:textSize="18sp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:text="名字"
            android:textColor="#000000"
            android:textSize="18sp"/>
        <TextView
            android:id="@+id/tv_phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:text="电话"
            android:textColor="#88000000"
            android:textSize="16sp"/>

    </LinearLayout>

</LinearLayout>

重新写一下adapter里面的getView方法:

getView                                                                                    

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Person person = list.get(position);
            View view = View.inflate(MainActivity.this, R.layout.listview_item, null);
            //找id
            TextView tv_id = (TextView) view.findViewById(R.id.tv_id);
            tv_id.setText("id:"+person.getId());
            TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
            tv_name.setText("tv_name:"+person.getName());
            TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);
            tv_phone.setText("tv_phone:"+person.getNumber());
            return view;
        }

我是天王盖地虎的分割线                                                               

源代码:http://pan.baidu.com/s/1dD1Qx01

listview学习.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

Android -- ListView与Adapter

时间: 2024-09-29 23:52:07

Android -- ListView与Adapter的相关文章

Android ListView 和 Adapter 从本地/网络获取歌曲列表

本文内容 环境 项目结构 演示1:SimpleAdapter 演示2:BaseAdapter 演示3:customlazylist 演示4:customcompletelazylist 本文只给出演示概要,代码太多,贴出来意义不大,自己下载调试一下,点击此处下载. 本文通过四个示例,循序渐进地演示,将歌曲列表加载到 ListView 控件,歌曲列表,包括缩略图.歌手名.歌曲名等信息,或存放在本地,或以 JSON 形式存放在网络. 环境 Windows 2008 R2 64 位 Eclipse A

Android listview与adapter用法

listview与adapter用法 博客分类: android 一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常简单. 一个ListView的创建需要3个元素. (1)ListView中的每一列的View. (2)填入View的数据或者图片等. (3)连接数据与ListView的适配器. 也就是说,要使用ListView,首先要了解什么是适配器

android ListView与Adapter详解

ListView可以说是android开发中非常非常常用的一个控件,今天整理了一下,ListView相关的东西,记录于此.(很奇怪,总感觉只有自己总结写过的东西才是属于自己的,看别人看多了,却总是心中不慎踏实) ListView在使用中有两个作用: 一是将数据绑定到ListView的item:而是ListView的item对用户点击时间作出响应,常用的有onClickListener与onLongClickListener,当然当你需要计算用户点击的具体位置再做出响应时,可以先实现onTouch

Android ListView 自定义 Adapter

自定义Adapter类 public class ListViewAdapter extends BaseAdapter { private static final String TAG = MainActivity.class.getName(); private Context context; // 运行上下文 private List<Map<String, Object>> listItems; // 商品信息集合 private LayoutInflater list

Android Listview整理

 Android实现带图标的ListView:http://blog.csdn.net/bear_huangzhen/article/details/23991119 Android listview与adapter用法:http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html android ListView详解: http://www.cnblogs.com/allin/archive/2010/05/11/1732

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

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

Xamarin.Android之ListView和Adapter

一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项). 二.简介适配器 在开始之前我们需要先了解下适配器,首先是提供给我们使用的适配器之间的关系: 下面我们将上面的适配器进行简单的介绍: BaseAdapter:顾名思义,就是所以适配器的基类,但是我们不能将其实例化,因为它是一个虚类,一般我们都是继承该类并实现其中的方法,形成形成自定义的列表(大多

【转】Android之自定义Adapter的ListView

http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html 在开发中,我们经常使用到ListView这个控件.Android的API也提供了许多创建ListView适配器的快捷方式.例如ArrayAdapter.SimpleAdapter和SimpleCursorAdapter等.但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位.假设一行里面有一个按钮和一个图片控件,它们之间的响应操作是不一样

android 修改listview中adapter数据时抛出异常java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification问题

近日在做项目时遇到非必现crush,具体异常信息为: // Short Msg: java.lang.IllegalStateException // Long Msg: java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not mo