android中怎么把数组的内容在ListView中显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中怎么把数组的内容在ListView中显示相关的知识,希望对你有一定的参考价值。

数组的内容显示在list上需要三大步:

1.ListVeiw 用来展示列表的View。

2.适配器Adapter 用来把数据映射到ListView上。

3.数据 具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

如果仅仅将数组的内容显示到ListView 上ArrayAdapter就够了
public classTest extends ListActivity

@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
String[] sw = new String[10];
for (int i = 0; i < 10; i++)
sw[i] = "List_" + i;

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,sw);//使用系统已经实现好的xml文件simple_list_item_1
setListAdapter(adapter);


//这样就容易的用系统已经实现的layout很快速的实现了listview加载数组sw,这样实现只能简单的将数组中的数据列在每一行上,同一行上不能添加其他东西,比如:图片/按键等
如果在同一行上进行不同的操作,可以用SimpleAdapter
如果在同一行上添加对象之类的,比如新浪微薄上每一条微薄、人人上每一条分享之类的,就要自己写类继承与BaseAdapter重写其中的getView方法

祝你好运~~
参考技术A 用ArrayAdapter适配器 参考技术B 看用什么适配器了追问

刚接触android,你能不能详细介绍下呢,多谢

追答

下面说的还算详细,并且举了一个不需要xml的例子,楼主可以运行感觉一下

ListView总结

ListView类作为在Android开发中经常会使用到的组件,作为新手,还是感到这一块变化形式还是很多的,需要慢慢学习。现在这里大概总结一下。

基于数组的ListView:使用android:entries属性可以指定列表项数组,这种方式最简洁方便,但内容只能是文本,可定制的内容少之又少。

使用ArrayAdapter创建ListView:也仅限于将数组或集合里的元素包装成列表项,比直接使用数组好在,可以指定列表项的列表项组件。例如:使用TextView作为列表项组件,不过也只能使用TextView。

例子:

1.列表项布局文件arraylist_item.xml:是的,没错,布局文件只包含一个TextView,这也是行的。

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/text1"/>

2.主界面布局文件activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:orientation="vertical"
    tools:context="com.example.zjlyyq.test.MainActivity">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listView" />
</LinearLayout>

3.MainActivity:

package com.example.zjlyyq.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {
    ListView listView;
    String[] names = new String[]{"晃过天空","芝加哥公牛队","但使东山谢安石","颠三倒四","临时监护人"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView)findViewById(R.id.listView);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.arraylist_item,names);
        listView.setAdapter(adapter);
    }
}

使用SimpleAdapter创建ListView:SimpleAdapter可以满足更强的定制,每个列表项对应一个布局文件,将一个Map里的元素对应在布局文件里的各组件,例如:

1.列表项布局文件simpleadapter_item.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">
    <ImageView
        android:layout_weight="0.15"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/header"/>
    <LinearLayout
        android:layout_weight="0.85"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/username"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/talk"/>
    </LinearLayout>
</LinearLayout>

2.MainActivity:

package com.example.zjlyyq.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    ListView listView;
    String[] names = new String[]{"晃过天空","芝加哥公牛队","但使东山谢安石","颠三倒四","临时监护人"};
    int[] headers = new int[]{R.drawable.plane,R.drawable.plane,R.drawable.plane,R.drawable.plane,R.drawable.plane};
    String[] talks = new String[]{"晚上吃了吗?","吃了","你呢?","还没?","哦哦"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView)findViewById(R.id.listView);
        List<Map<String,Object>> itemslist = new ArrayList<Map<String,Object>>();
        for(int i = 0;i < 5;i ++){
            Map<String,Object> evetyItem = new HashMap<String,Object>();
            evetyItem.put("header",headers[i]);
            evetyItem.put("name",names[i]);
            evetyItem.put("talk",talks[i]);
            itemslist.add(evetyItem);
        }
        //创建一个SimpleAdapter
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,itemslist,R.layout.simpleadapter_item,
        new String[]{"header","name","talk"},
        new int[]{R.id.header,R.id.username,R.id.talk});

        listView.setAdapter(simpleAdapter);
    }
}

 

以上是关于android中怎么把数组的内容在ListView中显示的主要内容,如果未能解决你的问题,请参考以下文章

android 怎么把存入数据库的信息显示在ListView中

android listview里面能嵌套gridview吗

android中怎么让listview的内容全部显示出来

Android Listview减慢滚动速度

android中上下滑动listview,顶端和底端布局可以隐藏和显示

android listview 怎么添加数据