zoukankan      html  css  js  c++  java
  • Android入门第六篇之ListView

    本文来自http://blog.csdn.net/hellogv/

           Android入门第六篇之ListView (一) ,讲的是如何制作一个具有两行文本的 自定义控件 ,作为ListView的Item的使用方法。这篇接下来也是围绕ListView和Item,更加深入地介绍它们的用法。

           首先,先来看看本文代码运行的结果,本文的Item比上一篇中的Item多出左边的图标:

          main.xml的源代码,跟上一篇的一样,这里就不作解释了,直接贴出item.xml的代码,就是它实现ImageItem的UI:

    1. <?xml version="1.0" encoding="utf-8"?>    
    2. <RelativeLayout     
    3.          android:layout_width="fill_parent"     
    4.          xmlns:android="http://schemas.android.com/apk/res/android"     
    5.          android:layout_height="wrap_content"     
    6.          android:paddingBottom="4dip"     
    7.          android:paddingLeft="12dip">    
    8.          <ImageView     
    9.                android:layout_width="wrap_content"     
    10.                android:id="@+id/itemImage" android:layout_height="fill_parent">     
    11.          </ImageView>    
    12.          <TextView     
    13.                android:text="TextView01"     
    14.                android:layout_height="wrap_content"     
    15.                android:layout_width="fill_parent"     
    16.                android:id="@+id/itemTitle" android:layout_toRightOf="@+id/itemImage" android:textSize="20dip">    
    17.          </TextView>    
    18.          <TextView     
    19.                android:text="TextView02"     
    20.                android:layout_height="wrap_content"     
    21.                android:layout_width="fill_parent"     
    22.                android:id="@+id/itemText" android:layout_toRightOf="@+id/itemImage" android:layout_below="@+id/itemTitle">    
    23.          </TextView>    
    24. </RelativeLayout>   

          解释一下 item.xml的代码:这里使用了RelativeLayout布局,控件的关键的属性是:

    itemTitle的属性 android:layout_toRightOf="@+id/itemImage" ,itemTitle在itemImage的右边;

    itemText的属性 android:layout_toRightOf="@+id/itemImage",ItemText在itemImage的右边, android:layout_below="@+id/itemTitle", itemText 在 itemTitle的下面。

           最后,贴出JAVA的源代码,其中重点是LayoutInflate的用法。LayoutInflate的使用方法如下: 

    • LayoutInflater的作用是,把一个View的对象与XML布局文件关联并实例化。
    • View的对象实例化之后,可以通过findViewById()查找布局文件中的指定Id的组件。
    1. package com.testListView;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Context;  
    5. import android.os.Bundle;  
    6. import android.view.LayoutInflater;  
    7. import android.view.View;  
    8. import android.view.ViewGroup;  
    9. import android.widget.BaseAdapter;  
    10. import android.widget.ImageView;  
    11. import android.widget.ListView;  
    12. import android.widget.TextView;  
    13.   
    14. public class testListView extends Activity {  
    15.     ListView listView;  
    16.     String[] titles={"标题1","标题2","标题3","标题4"};  
    17.     String[] texts={"文本内容A","文本内容B","文本内容C","文本内容D"};  
    18.     int[] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon};  
    19.       
    20.     @Override  
    21.     public void onCreate(Bundle savedInstanceState) {  
    22.         super.onCreate(savedInstanceState);  
    23.         setContentView(R.layout.main);  
    24.         this.setTitle("BaseAdapter for ListView");  
    25.         listView=(ListView)this.findViewById(R.id.listView1);  
    26.         listView.setAdapter(new ListViewAdapter(titles,texts,resIds));  
    27.     }  
    28.   
    29.     public class ListViewAdapter extends BaseAdapter {  
    30.         View[] itemViews;  
    31.   
    32.         public ListViewAdapter(String[] itemTitles, String[] itemTexts,  
    33.                 int[] itemImageRes) {  
    34.             itemViews = new View[itemTitles.length];  
    35.   
    36.             for (int i = 0; i < itemViews.length; i++) {  
    37.                 itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],  
    38.                         itemImageRes[i]);  
    39.             }  
    40.         }  
    41.   
    42.         public int getCount() {  
    43.             return itemViews.length;  
    44.         }  
    45.   
    46.         public View getItem(int position) {  
    47.             return itemViews[position];  
    48.         }  
    49.   
    50.         public long getItemId(int position) {  
    51.             return position;  
    52.         }  
    53.   
    54.         private View makeItemView(String strTitle, String strText, int resId) {  
    55.             LayoutInflater inflater = (LayoutInflater) testListView.this  
    56.                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    57.   
    58.             // 使用View的对象itemView与R.layout.item关联  
    59.             View itemView = inflater.inflate(R.layout.item, null);  
    60.   
    61.             // 通过findViewById()方法实例R.layout.item内各组件  
    62.             TextView title = (TextView) itemView.findViewById(R.id.itemTitle);  
    63.             title.setText(strTitle);  
    64.             TextView text = (TextView) itemView.findViewById(R.id.itemText);  
    65.             text.setText(strText);  
    66.             ImageView image = (ImageView) itemView.findViewById(R.id.itemImage);  
    67.             image.setImageResource(resId);  
    68.               
    69.             return itemView;  
    70.         }  
    71.   
    72.         public View getView(int position, View convertView, ViewGroup parent) {  
    73.             if (convertView == null)  
    74.                 return itemViews[position];  
    75.             return convertView;  
    76.         }  
    77.     }  
    78.   
    79. }  
  • 相关阅读:
    macbook 无声音解决方案
    webapck dev server代理请求 json截断问题
    百度卫星地图开启
    服务器 nginx配置 防止其他域名绑定自己的服务器
    记一次nginx php配置的心路历程
    遇到npm报错read ECONNRESET怎么办
    运行svn tortoiseSvn cleanup 命令失败的解决办法
    svn add 命令 递归目录下所有文件
    m4出现Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
    Ubuntu下安装GCC,mpc、mpfr、gmp
  • 原文地址:https://www.cnblogs.com/wlh652475101/p/3486904.html
Copyright © 2011-2022 走看看