my notepad

本博客文章如未注明,均为转载。

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没有内容则显示的提示:代码如下:              

 
<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!"/>   

1)main.xml布局文件            

 
 
<?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             

 
<?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)代码:           

 
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;                  //适配器      
       
    /** Called when the activity is first created. */  
    @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,//数据源       
             R.layout.list_item,//ListItem的XML布局实现      
             //动态数组与ImageItem对应的子项              
             new String[] {"ItemTitle", "ItemImage"},       
             //ImageItem的XML文件里面的一个ImageView,两个TextView ID      
             new int[] {R.id.ItemTitle, R.id.ItemImage}      
         );      
    }   
  
    @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) {   
            // TODO Auto-generated method stub   
            //添加多一项   
             HashMap<String, Object> map = new HashMap<String, Object>();      
             map.put("ItemTitle", "Music: "+ et_item.getText().toString());      
             map.put("ItemImage", R.drawable.music);     
             listItems.add(map);   
             //重新设置适配器   
             ListActivityImpl.this.setListAdapter(listItemAdapter);   
        }   
    }   

这里也涉及到ListView的图片、文字添加方式,本程序是一个图片一个文字,当然,也可以实现多个图片和文字的效果,有兴趣的读者可以试试。

 

 

阅读更多
个人分类: Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭