【转】Android笔记-如何创建列表视图1

本文介绍如何使用ListView和ArrayAdapter创建简单的列表应用。通过实例展示了如何配置ListView、创建ArrayAdapter并设置点击事件。

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

可以通过ListView和ArrayAdapter两个类协助来完成:

1.  新建一个工程,将Layout文件的根视图改成ListView,当然也可以将ListView插到根视图里,这里用的是改根视图的方式:
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    <?xml version="1.0" encoding="utf-8"?>
    
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width
="fill_parent" 
        android:layout_height
="fill_parent" 
        android:id
="@+id/listview_main">
    
</ListView>

 


2.  在Activty里面写下面的代码:
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    package colin.demo;

    
import android.app.Activity;
    
import android.os.Bundle;
    
import android.view.View;
    
import android.widget.AdapterView;
    
import android.widget.ArrayAdapter;
    
import android.widget.ListView;
    
import android.widget.Toast;
    
import android.widget.AdapterView.OnItemClickListener;

    
public class MainFrom extends Activity {
        
/** Called when the activity is first created. */
        @Override
        
public void onCreate(Bundle savedInstanceState) {
            
super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            
// 取得ListView
            mListView = (ListView)findViewById(R.id.listview_main);
            
// 创建一个ArrayAdapter
            ArrayAdapter<String> uiDemoList = new ArrayAdapter<String>(this, R.layout.textview_item, mDemoList);
            mListView.setAdapter(uiDemoList);
            
// 使ListView支持过滤搜索
            mListView.setTextFilterEnabled(true);
            
// 设置事件
            mListView.setOnItemClickListener(mItemClickListenter);
        }
        
        
private void ShowMessage(CharSequence msg)
        {
            
if (mToast == null)
                mToast 
= Toast.makeText(this, msg, Toast.LENGTH_LONG);
            mToast.setText(msg);
            mToast.show();
        }
        
        
private OnItemClickListener mItemClickListenter = new OnItemClickListener()
        {
            @Override
            
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                
// 弹个Tooltip出来
                ShowMessage(mDemoList[position]);
            }
        };    
        
        
private Toast mToast;
        
private ListView mListView;
        
private String [] mDemoList = 
        {
            
"DemoView1""DemoView2""DemoView3",
        };
    }

 

    
这里最重要的是ArrayAdapter的创建,构造函数声明如下:
    public ArrayAdapter (Context context, int textViewResourceId, T[] objects)
    *.  textViewResourceId 这是一个Layout的资源ID,其根元素必须是一个TextView,显然ArrayAdpater要用这个TextView作为模板设置给ListView,让它作为ListView的一项显示。
    *.  Objects 是代表数据列表,ArrayAdapter会调用T的toString(),将它显示到TextView上。我们这里将T设为String类型,但其实它可以不是String的。

3.  上面看到ArrayAdapter需要一个Layout的ID,我们现在要创建这个Layout
    *.  在Package Explorer的Res处右键菜单,点击New/Others...

    *.  在弹出来的对话框处,选择Adroid/Android XML File

    *.  在弹出来的对话框处,输入下面消息:

        在File处输入textview_item.xml
        在What type of resource would you like to create处选择Layout
        在Select the root element for the XML file处选择TextView
    *.  点击确定,就在res/layout目录下创建了一个textview_item.xml的布局文件。
    你可以设置TextView的属性,这些设置都会反映到列表框中。
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->    <?xml version="1.0" encoding="utf-8"?>
    
<TextView
      
xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width
="fill_parent"
      android:layout_height
="fill_parent" android:text="text" android:textSize="12pt" android:typeface="sans">
    
</TextView> 

4.  最后运行程序,可以看到下面的程序:
     
    上面的例子反映了视图与Adapter的关系,使用它们可以创建出很多样的界面,这是以后的主题了。
    我们这里用的数据项是String,但事实上可以用其他的类,你可以自定义一个类,包含一些数据,然后覆盖toString()方法,返回字符串给ListView显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值