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

ListActivity简单的说就是ListView和Activity的结合,跟ListView和Activity组合实现的没有什么很大的差别,主要是比较方便。但在实现时,有几点要注意。

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

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

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

                 b、xml文件中,添加一个LIstView控件,和一个TextView控件,注意它们id必须为"@id/android:list"、 "@id/android:empty"; 前一个表示表示匹配的ListView,后一个表示若LIstView没有内容则显示的提示:代码如下:

 

  1. < ListView    
  2.     android:id = "@id/android:list"     
  3.     android:layout_width = "fill_parent"     
  4.     android:layout_height = "0dip"     
  5.     android:layout_weight = "1"     
  6.     android:drawSelectorOnTop = "false" />   
  7. < TextView    
  8.     android:id = "@id/android:empty"   
  9.     android:layout_width = "wrap_content"     
  10.     android:layout_height = "wrap_content"      
  11.     android:text = "Can not find the file!" />     

            下面是程序截图和代码:

                  

            1)main.xml布局文件

 

  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   
  2. < LinearLayout   xmlns:android = "http://schemas.android.com/apk/res/android"   
  3.     android:orientation = "vertical"   
  4.     android:layout_width = "fill_parent"   
  5.     android:layout_height = "fill_parent"   
  6.     >   
  7. < LinearLayout   
  8.     android:layout_width = "fill_parent"   
  9.     android:layout_height = "wrap_content" >   
  10. < EditText   
  11.     android:id = "@+id/et_item"   
  12.     android:layout_width = "212px"   
  13.     android:layout_height = "wrap_content" >   
  14. </ EditText >   
  15. < Button   
  16.     android:id = "@+id/bt_add"   
  17.     android:layout_width = "83px"   
  18.     android:layout_height = "51px"   
  19.     android:text = "添加" >   
  20. </ Button >   
  21. </ LinearLayout >   
  22. < ListView    
  23.     android:id = "@id/android:list"     
  24.     android:layout_width = "fill_parent"     
  25.     android:layout_height = "0dip"     
  26.     android:layout_weight = "1"     
  27.     android:drawSelectorOnTop = "false" />   
  28. < TextView    
  29.     android:id = "@id/android:empty"   
  30.     android:layout_width = "wrap_content"     
  31.     android:layout_height = "wrap_content"      
  32.     android:text = "Can not find the file!" />     
  33. </ LinearLayout >   

                 LIstView Item的布局文件list_item.xml

 

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

              2)代码:

 

  1. package  com.myandroid.test;  
  2.   
  3. import  java.util.ArrayList;  
  4. import  java.util.HashMap;  
  5. import  android.app.ListActivity;  
  6. import  android.os.Bundle;  
  7. import  android.util.Log;  
  8. import  android.view.View;  
  9. import  android.view.View.OnClickListener;  
  10. import  android.widget.Button;  
  11. import  android.widget.EditText;  
  12. import  android.widget.ListView;  
  13. import  android.widget.SimpleAdapter;  
  14.   
  15.   
  16. public   class  ListActivityImpl  extends  ListActivity {  
  17.     private  Button bt_add;    
  18.     private  EditText et_item;  
  19.     private  ArrayList<HashMap<String, Object>> listItems;    //存放文字、图片信息   
  20.     private  SimpleAdapter listItemAdapter;                   //适配器      
  21.       
  22.     /** Called when the activity is first created. */   
  23.     @Override   
  24.     public   void  onCreate(Bundle icicle)  
  25.     {  
  26.         super .onCreate(icicle);  
  27.         setContentView(R.layout.main);  
  28.         bt_add = (Button)findViewById(R.id.bt_add);  
  29.         et_item = (EditText)findViewById(R.id.et_item);  
  30.         initListView();  
  31.         this .setListAdapter(listItemAdapter);    
  32.         bt_add.setOnClickListener(new  ClickEvent());      
  33.     }  
  34.       
  35.     /**  
  36.      * 设置适配器内容  
  37.      */   
  38.     private   void  initListView()   {     
  39.         listItems = new  ArrayList<HashMap<String, Object>>();  
  40.          for ( int  i= 0 ;i< 10 ;i++)     
  41.          {     
  42.              HashMap<String, Object> map = new  HashMap<String, Object>();     
  43.              map.put("ItemTitle""Music: " +i);      //文字   
  44.              map.put("ItemImage" , R.drawable.music); //图片      
  45.              listItems.add(map);     
  46.          }     
  47.          //生成适配器的Item和动态数组对应的元素      
  48.          listItemAdapter = new  SimpleAdapter( this ,listItems, //数据源       
  49.              R.layout.list_item,//ListItem的XML布局实现      
  50.              //动态数组与ImageItem对应的子项              
  51.              new  String[] { "ItemTitle""ItemImage" },      
  52.              //ImageItem的XML文件里面的一个ImageView,两个TextView ID      
  53.              new   int [] {R.id.ItemTitle, R.id.ItemImage}     
  54.          );     
  55.     }  
  56.   
  57.     @Override   
  58.     protected   void  onListItemClick(ListView l, View v,  int  position,  long  id) {  
  59.         // TODO Auto-generated method stub   
  60.         Log.e("position"""  + position);  
  61.         setTitle("你点击第" +position+ "行" );   
  62.     }     
  63.       
  64.     class  ClickEvent  implements  OnClickListener {  
  65.         @Override   
  66.         public   void  onClick(View v) {  
  67.             // TODO Auto-generated method stub   
  68.             //添加多一项   
  69.              HashMap<String, Object> map = new  HashMap<String, Object>();     
  70.              map.put("ItemTitle""Music: " + et_item.getText().toString());     
  71.              map.put("ItemImage" , R.drawable.music);    
  72.              listItems.add(map);  
  73.              //重新设置适配器   
  74.              ListActivityImpl.this .setListAdapter(listItemAdapter);  
  75.         }  
  76.     }  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ListViewAndroid最常用的UI组件之一,用于展示具有固定结构的大量数据。它继承自AdapterView,可以通过Adapter来动态地显示数据。 ListView的特点是:每一行数据都是相同的布局,并且每个Item的高度是相同的。因此,我们可以利用ListView来展示一些比较简单的数据列表。 在使用ListView时,我们需要实现一个Adapter来提供数据,并且可以对ListView的Item进行自定义布局。以下是一个简单的使用ListView的例子: ```java public class MainActivity extends AppCompatActivity { private ListView mListView; private List<String> mDataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = findViewById(R.id.list_view); // 初始化数据 mDataList = new ArrayList<>(); for (int i = 0; i < 50; i++) { mDataList.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList); // 设置适配器 mListView.setAdapter(adapter); } } ``` 在这个例子,我们使用Android自带的ArrayAdapter作为ListView的适配器,并且使用了系统提供的简单列表项布局simple_list_item_1,将数据逐一展示在ListView。 除了普通的ListViewAndroid还提供了一个ListActivity类,它是一个已经封装好的Activity,专门用来展示ListView。我们只需要继承ListActivity,实现一个适配器即可。以下是一个使用ListActivity的例子: ```java public class MainActivity extends ListActivity { private List<String> mDataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化数据 mDataList = new ArrayList<>(); for (int i = 0; i < 50; i++) { mDataList.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList); // 设置适配器 setListAdapter(adapter); } } ``` 在这个例子,我们继承了ListActivity,并且在onCreate()方法直接使用setListAdapter()方法设置适配器,省去了findViewById()和ListView的初始化过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值