加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 教程 > 正文

Android开发:ListView常用方法

发布时间:2021-11-25 16:43:34 所属栏目:教程 来源:互联网
导读:ListView 是 AdapterView 的派生类, AdapterView 是 ViewGroup 的派生类。 ListView 将需要显示的内容,放在一个可以垂直滚动的列表中进行显示。而要显示的内容是由和 ListView 相关联的 ListAdapter 指定的。通常是 ArrayAdapter 或者 CursorAdapter ,这

ListView 是 AdapterView 的派生类, AdapterView 是 ViewGroup 的派生类。
 
ListView 将需要显示的内容,放在一个可以垂直滚动的列表中进行显示。而要显示的内容是由和 ListView 相关联的 ListAdapter 指定的。通常是 ArrayAdapter 或者 CursorAdapter ,这两者都是 ListAdapter 的派生类。
 
因此 ArrayAdapter 和 CursorAdapter 就是 ListView 的数据源。通常情况下,他们的主要区别是:
 
a.     ArrayAdapter 用于指定数组中的数据,而 CursorAdapter 用于指定一个 Cursor 对象中的数据 ( 比如从数据库中查询得到的结果 )
 
b.     ArrayAdapter 用于适合指定只有一列的数据,而 CursorAdapter 适合指定由多列的数据,但这点并不是很严格,也就是说 ArrayAdapter 也可以用于多列数据, CursorAdapter 也可以用于显示单列数据。
 
下面我们用实际的例子来说明。
 
第一个例子:
 
最简单的 ListView 用法。
 
1.     创建一个 Android Project ,修改其 main.xml ,使之如下:
 
<? xml version = "1.0" encoding = "utf-8" ?>
 
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
 
    android:id = "@+id/linearlayout"
 
    android:orientation = "vertical"
 
    android:layout_width = "fill_parent"
 
    android:layout_height = "fill_parent"
 
    >
 
 
 
         <!-- 在 layout 中增加一个 ListView -->
 
         < ListView
 
                   android:id = "@+id/listview"
 
                   android:layout_width = "wrap_content"
 
                   android:layout_height = "wrap_content"
 
         />
 
</ LinearLayout >
 
 
 
2.     修改 Activity 所对应的代码,使之如下:
 
package com.pat.gui;
 
 
 
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.TextView;
 
import android.widget.Toast;
 
import android.widget.AdapterView.OnItemClickListener;
 
 
 
public class ControlListView extends Activity
 
implements
 
OnItemClickListener
 
{
 
         // 声明一个 ListView 对象
 
         private ListView listview ;
 
         // 定义一个 String 数组 , 用以代表各种不同的手机操作系统
 
         private String os [] = { "Android" , "iOS" , "Windows Phone" , "Symbian" ,
 
                                         "BlackBerry" , "PalmOS" , "OPhone" , "Others..." };
 
    @Override
 
    public void onCreate(Bundle savedInstanceState)
 
    {
 
        super .onCreate(savedInstanceState);
 
        setContentView(R.layout. main );
 
        // 获得 ListView 对象
 
        listview = (ListView) this .findViewById(R.id. listview );
 
        // 定义一个 ArrayAdapter 对象 , ArrayAdapter 有多个构造方法重载 , 其中下面用到的构造方法原型为 :
 
        //public ArrayAdapter (Context context, int textViewResourceId, T[] objects)
 
        //context                                 The current context.
 
        //textViewResourceId           The resource ID for a layout file containing a TextView to use
 
        //                                              when instantiating views.
 
        //objects                                 The objects to represent in the ListView.
 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>( this , android.R.layout. simple_list_item_1 , os );
 
        // android.R.layout.simple_list_item_1 是 Android 预先定义好的 , 我们自己也可以另外定义
 
       
 
        listview .setAdapter(adapter);                          // 将 adapter 和 listview 关联起来
 
       
 
        listview .setOnItemClickListener( this );       // 为 listview 设置 OnItemClickListener
 
    }
 
   
 
         //@Override
 
         public void onItemClick(AdapterView<?> parent, View view, int position, long id)
 
         //       parent               The AdapterView where the click happened.
 
         //       view                   The view within the AdapterView that was clicked (this will be a view provided by the adapter)
 
         //       position            The position of the view in the adapter.
 
         //       id                        The row id of the item that was clicked.
 
         {
 
                   Toast.makeText ( this ,
 
                                     "/"" + ((TextView)view).getText().toString() + "/".  It's position is " + position,
 
                                     Toast. LENGTH_SHORT ).show();
 
         }
 
}
 
 
 
运行结果如下:
 
 
上面的 ListView 可以上下滚动。
 
  
 
点击 Symbian ,则会出现:
 
 
  
 
 
 
第二个例子:
 
自定义显示 ListView 中每行的 layout ,同时显示图片和文字。
 
1.     在 res/layout 中,创建一个用于显示 ListView 条目的 layout 文件: rowlayout.xml ,使之如下:
 
<? xml version = "1.0" encoding = "utf-8" ?>
 
< LinearLayout
 
  xmlns:android = "http://schemas.android.com/apk/res/android"
 
  android:layout_width = "wrap_content"
 
  android:layout_height = "wrap_content"
 
  android:orientation = "horizontal" >
 
 
 
         < ImageView
 
                 android:id = "@+id/row_icon"
 
                 android:layout_width = "60px"
 
                 android:layout_height = "80px"
 
                 android:src = "@drawable/icon"
 
       />
 
      
 
       < TextView
 
                 android:id = "@+id/row_text"
 
                 android:layout_width = "wrap_content"
 
                 android:layout_height = "80px"
 
                 android:textSize = "30px"
 
                 android:textColor = "#0F0"
 
                 android:gravity = "center_vertical"
 
       />
 
</ LinearLayout >
 
其中的 ImageView 用于显示图片, TextView 用于显示文字。

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读