Android中ListActivity的使用和在ListView中添加圖片文字


ListActivity簡單的說就是ListView和Activity的結合,跟ListView和Activity組合實現的沒有什么很大的差別,主要是比較方便。但在實現時,有幾點要注意。

1、ListActivity可以不用setContentView(R.layout.main),它默認是LIstView占滿屏。

2、如果想在屏幕中顯示其他控件,如文本框和按鈕之類,可以采用如下方法:

      a、代碼中添加:setContentView(R.layout.main)

      b、在 main.xml 文件中,添加一個LIstView控件,和一個 TextView 控件,注意它們 id 必須為"@id/android:list"、          "@id/android:empty";前一個表示匹配的ListView,后一個表示若LIstView沒有內容則顯示的提示:代碼如下:

 

1)main.xml布局文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? 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" >
     < LinearLayout android:layout_width = "fill_parent"
         android:layout_height = "wrap_content" >
         < EditText android:id = "@+id/et_item" android:layout_width = "212px"
             android:layout_height = "wrap_content" >
         </ EditText >
         < Button android:id = "@+id/bt_add" android:layout_width = "83px"
             android:layout_height = "51px" android:text = "添加" >
         </ Button >
     </ LinearLayout >
     < ListView android:id = "@id/android:list" android:layout_width = "fill_parent"
         android:layout_height = "0dip" android:layout_weight = "1"
         android:drawSelectorOnTop = "false" />
     < TextView android:id = "@id/android:empty" android:layout_width = "wrap_content"
         android:layout_height = "wrap_content" android:text = "Can not find the file!" />
  
</ LinearLayout >

 

下面是程序截圖和代碼:



LIstView Item的布局文件list_item.xml

 

1
2
3
4
5
6
7
8
9
10
11
<? xml version = "1.0" encoding = "utf-8" ?>
< LinearLayout android:id = "@+id/LinearLayout01"
     android:layout_width = "fill_parent" xmlns:android = "http://schemas.android.com/apk/res/android"
     android:layout_height = "wrap_content" >
     < ImageView android:layout_width = "wrap_content"
         android:layout_height = "wrap_content" android:id = "@+id/ItemImage" />
     < TextView android:layout_height = "wrap_content"
         android:textSize = "20dip" android:layout_width = "fill_parent"
         android:id = "@+id/ItemTitle" />
  
</ LinearLayout >

2)代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.myandroid.test;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
  
public class ListActivityImpl extends ListActivity {
     private Button bt_add;    
     private EditText et_item;
     private ArrayList<HashMap<String, Object>>   listItems;    //存放文字、圖片信息
     private SimpleAdapter listItemAdapter;           //適配器   
     @Override
     public void onCreate(Bundle icicle)   {
         super .onCreate(icicle);
         setContentView(R.layout.main);
         bt_add = (Button)findViewById(R.id.bt_add);
         et_item = (EditText)findViewById(R.id.et_item);
         initListView();
         this .setListAdapter(listItemAdapter);  
         bt_add.setOnClickListener( new ClickEvent());    
     }
     /**
      * 設置適配器內容
      */
     private void initListView()   {   
         listItems = new ArrayList<HashMap<String, Object>>();
         for ( int i= 0 ;i< 10 ;i++)    {   
             HashMap<String, Object> map = new HashMap<String, Object>();   
             map.put( "ItemTitle" , "Music: " +i);    //文字
             map.put( "ItemImage" , R.drawable.music);   //圖片   
             listItems.add(map);   
         }   
         //生成適配器的Item和動態數組對應的元素   
         listItemAdapter = new SimpleAdapter( this ,listItems,   // listItems數據源    
                 R.layout.list_item,  //ListItem的XML布局實現  
                 new String[] { "ItemTitle" , "ItemImage" },     //動態數組與ImageItem對應的子項         
                 new int [ ] {R.id.ItemTitle, R.id.ItemImage}      //list_item.xml布局文件里面的一個ImageView的ID,一個TextView 的ID  
         );   
     }
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id)  {
         // TODO Auto-generated method stub
         Log.e( "position" , "" + position);
         setTitle( "你點擊第" +position+ "行" );
     }  
     class ClickEvent implements OnClickListener {
         @Override
         public void onClick (View v)  {
             // 向ListView里添加一項
             HashMap<String, Object> map = new HashMap<String, Object>();   
             map.put( "ItemTitle" , "Music: " + et_item.getText().toString());   
             map.put( "ItemImage" , R.drawable.music);     //每次都放入同樣的圖片資源ID
             listItems.add(map);
             //重新設置適配器
             ListActivityImpl. this .setListAdapter(listItemAdapter);
         }
     }
}

這里也涉及到ListView的圖片、文字添加方式,本程序是一個圖片一行文字


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM