使用ListView控件以列表形式显示一系列数据

本文详细介绍了Android中ListView控件的使用,包括如何通过ArrayAdapter显示文本数据,以及如何通过自定义Adapter展示包含图片和文本的复杂信息。提供了具体的XML布局文件和Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ListView Android 系统中以列表形式来显示数据的控件。

 

使用 ListView 控件需要下面三个要素:

l         用来显示列表的 View

l         数据源:需要被显示在列表中的内容,可以是图片,文字等

l         适配器。将数据映射到 ListView 的媒介。 ArrayAdapter , SimpleAdapter , SimpleCursorAdapter , BaseAdapter 等。

 

第一种情况:如果只是在列表中显示一系列文本数据的我们可以 ArrayAdapter 来实现。

实现效果图如下:



 

先定义实例化视图时需要用到的包含一个 TextView layout(list_textview_item.xml) 文件

 

<?xml version="1.0" encoding="utf-8"?>

 

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/sms1_text1"

    android:layout_width="fill_parent"

    android:layout_height="?android:attr/listPreferredItemHeight"

    android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"

    android:textAppearance="?android:attr/textAppearanceLarge"

    android:gravity="center_vertical"

/>

 

 

ListViewSampleActivity.java

public class ListViewSampleActivity extends Activity {

 

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super .onCreate(savedInstanceState);

 

        ListView listView = new ListView( this );

        listView.setAdapter(new ArrayAdapter(this, R.layout.list_textview_item, getResources()

                .getStringArray(R.array.ListViewTitleArray)));

        setContentView(listView);

    }

}

 

第二种:我们需要在列表中显示比较复杂的信息,下面例子中每行包含了一个图片,两个文本控件。 实现效果图如下:

 

定义主界面的 layout 文件 main.xml 如下:

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

    android:orientation = "vertical"

    android:layout_width = "fill_parent"

    android:layout_height = "fill_parent"

    >

    < ListView

        android:layout_width = "fill_parent"

        android:layout_height = "wrap_content"

        android:id = "@+id/AndroidSampleListView" />

</ LinearLayout >

 

定义每一个列表项布局的 layout 文件 complex_list_item.xml 如下:

<? xml version = "1.0" encoding = "utf-8" ?>

 

< RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"

    android:layout_width = "fill_parent"

    android:layout_height = "wrap_content"

    >

 

    < ImageView

        android:id = "@+id/list_item_img"

        android:layout_width = "wrap_content"

        android:layout_height = "wrap_content"

        android:layout_alignParentTop = "true"

        android:layout_alignParentLeft = "true"

        android:scaleType = "fitCenter"

        />

 

    < TextView

        android:id = "@+id/list_item_title"

        android:layout_width = "wrap_content"

        android:layout_height = "wrap_content"

        android:singleLine = "true"

        android:layout_alignParentTop = "true"

        android:layout_toRightOf = "@id/list_item_img"

        android:paddingLeft = "10dp"

        android:textAppearance = "?android:attr/textAppearanceMedium"

        />

 

    < TextView

        android:layout_width = "fill_parent"

        android:layout_height = "wrap_content"

        android:id = "@+id/list_item_content"

        android:singleLine = "true"

        android:paddingLeft = "10dp"

        android:layout_toRightOf = "@id/list_item_img"

        android:layout_below = "@id/list_item_title"

        android:textAppearance = "?android:attr/textAppearanceSmall"

        />

</ RelativeLayout >

 

Java 代码部分:

ListViewSampleActivity .java

 

package com.android.sample;

 

import android.app.Activity;

import android.os.Bundle;

import android.widget.ListView;

 

public class ListViewSampleActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super .onCreate(savedInstanceState);

 

        setContentView(R.layout. main );

        ListView listView = (ListView) findViewById(R.id. AndroidSampleListView );

 

        ListViewSampleAdapter listViewAdapter = new ListViewSampleAdapter( this );

        listView.setAdapter(listViewAdapter );

    }

}

 

ListViewSampleAdapter.java

 

package com.android.sample;

 

import android.content.res.Resources;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

 

public class ListViewSampleAdapter extends BaseAdapter {

 

    private ListViewSampleActivity mContext;

    private String mListViewTitilArrays[];

    private String mListViewContentArrays[];

    private Resources mResource;

 

    public ListViewSampleAdapter(ListViewSampleActivity listActivity) {

        mContext = listActivity;

        mResource = mContext.getResources();

        mListViewTitilArrays = mResource.getStringArray(

                R.array.ListViewTitleArray);

        mListViewContentArrays = mResource.getStringArray(R.array.ListViewContentArray);

    }

 

    @Override

    public int getCount() {

        return mListViewTitilArrays.length;

    }

 

    @Override

    public Object getItem(int position) {

        // TODO Auto-generated method stub

        return null;

    }

 

    @Override

    public long getItemId(int position) {

        return position;

    }

 

    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        ListViewSampleItem listItem;

 

        if (null != convertView)

        {

            listItem = (ListViewSampleItem)convertView;

        }

        else

        {

             listItem = new ListViewSampleItem(mContext);

            listItem.setTitle(mListViewTitilArrays[position]);

            listItem.setContent(mListViewContentArrays[position]);

            listItem.setImage(R.drawable.img_dog);

        }

 

        return listItem;

    }

 

}

 

ListViewSampleItem.java

 

package com.android.sample;

 

import android.content.Context;

import android.view.LayoutInflater;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

 

public class ListViewSampleItem extends LinearLayout {

 

    private TextView mTitle;

    private TextView mContent;

    private ImageView mImage;

 

    public ListViewSampleItem(Context context) {

        super(context);

        LayoutInflater factory = LayoutInflater.from(context);

        factory.inflate(R.layout.complex_list_item, this);

 

        mTitle = (TextView)findViewById(R.id.list_item_title);

        mContent = (TextView)findViewById(R.id.list_item_content);

        mImage = (ImageView)findViewById(R.id.list_item_img);

    }

 

    public void setTitle(String title)

    {

        mTitle.setText(title);

    }

 

    public void setContent(String content)

    {

        mContent.setText(content);

    }

 

    public void setImage(int id) {

        mImage.setImageResource(id);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值