首页 > 代码库 > 1.2列表显示的三元素:数据、视图、适配器
1.2列表显示的三元素:数据、视图、适配器
一.列表显示的三元素:数据、视图、适配器
1.ListView这个组件用于显示;
2.适配器用于绑定数据,即将数据映射到ListView上;
3.数据需映射到ListView的数据可以是字符串、图片或者基本的组件。
二.一般R文件报错,有很大的可能是layout的布局文件出错,记得保存后在build-clean project中clean一下,恢复文件。
三:适配器的类型:
1.ArrayAdapter 只能显示一行字。
2.SimpleAdapter 有最好的扩充性,可以定义出各种各样的布局出来,可以放ImageView 、Button 、CheckBox 等。使用时直接继承ListActivity 。
3.SimpleCursorAdapter可以方便的把数据库的内容以列表的形式展示出来。
特别注意:使用SimpleAdapter的数据一般都是HashMap构成的List ,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应的id的组件上。
1.建立两个布局文件tuyang_layout.xml(这里面相当于一个模板,即将要显示在listView里面的版式)和tuyang_list.xml(建立一个listView并声明id,有时候虚拟机不显示列表的items,就在点击Design上方的NoActionBar选择DeviceDefault中的DeviceDefault.DialogWhelarge.NoActionBar)
tuyang_layout.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFCC99" > <ImageView android:id="@+id/image" android:layout_width="100dp" android:layout_height="150dp" android:background="@mipmap/f" android:layout_margin="10dp"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_margin="10dp" > <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:textSize="30dp"/> <TextView android:id="@+id/intro" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="人物简介:集美貌与智慧于一身的大美女。" android:textSize="20dp"/> </LinearLayout></LinearLayout>
2.tuyang_list.xml:
<ListView android:id="@+id/tylist" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
3.建立tuyang_listActivity的java文件
package com.example.administrator.teachers_app;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.widget.ListView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Created by Administrator on 2016/9/21. * 定义列表listview, listView= (ListView) findViewById(R.id.tylist);将该列表的参数传递给listview * 对象,然后要把tuyang_layout.xml里的数据格式(list嵌套map:把map里的数据格式以多条的条状显示)封装刀tuyang_list.xml,在用适配器将所有参数传递到listview里 */public class tuyang_listActivity extends AppCompatActivity{ ListView listView; List<Map<String,Object>> list=null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tuyang_list); listView= (ListView) findViewById(R.id.tylist); list=getdata();//现在所有的数据都在list这个对象里,下面要做的就是通过普通适配器,把数据送到listview // 里进行排列 SimpleAdapter simpleAdapter=new SimpleAdapter(tuyang_listActivity.this,getdata(),R.layout. tuyang_layout,new String[]{"f_image","f_name","f_intro"}, new int[]{R.id.image,R.id.name,R.id.intro}); listView.setAdapter(simpleAdapter);//获取适配器的数据 } /** * 封装数据 * * @return */ public List<Map<String,Object>> getdata(){ List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); Map<String,Object> map=new HashMap<>(); map.put("id","1"); map.put("f_image",R.mipmap.f); map.put("f_name","芳"); map.put("f_intro","一个集美貌与智慧于一身的女子"); list.add(map); map=new HashMap<>(); map.put("id","2"); map.put("f_image",R.mipmap.f); map.put("f_name","乔"); map.put("f_intro","一个跟猪一样傻乎乎的女子"); list.add(map); map=new HashMap<>(); map.put("id","3"); map.put("f_image",R.mipmap.f); map.put("f_name","蓉"); map.put("f_intro","一个温婉持家的女子"); list.add(map); map=new HashMap<>(); map.put("id","4"); map.put("f_image",R.mipmap.f); map.put("f_name","米"); map.put("f_intro","一个集上述优点于一身的女子"); list.add(map); return list; }}
1.2列表显示的三元素:数据、视图、适配器