1.2列表显示的三元素:数据视图适配器

Posted 下一个秋天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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列表显示的三元素:数据视图适配器的主要内容,如果未能解决你的问题,请参考以下文章

我如何从一个片段到另一个片段的列表视图适配器进行事务

片段内带有基本适配器的列表视图

将 JSON 字符串从片段传递到适配器的问题

如何使列表视图出现在片段中?

如何从片段内的列表视图打开链接网址?

从活动更新视图页面中片段中的列表视图