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

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 extendsListActivity {
    privateButton bt_add;   
    privateEditText et_item;
    privateArrayList<HashMap<String, Object>>   listItems;    //存放文字、图片信息
    privateSimpleAdapter listItemAdapter;           //适配器  
    @Override
    publicvoid 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(newClickEvent());   
    }
    /**
     * 设置适配器内容
     */
    privatevoid initListView()   {  
        listItems =new ArrayList<HashMap<String, Object>>();
        for(inti=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布局实现 
                newString[] {"ItemTitle","ItemImage"},    //动态数组与ImageItem对应的子项        
                newint[ ] {R.id.ItemTitle, R.id.ItemImage}     //list_item.xml布局文件里面的一个ImageView的ID,一个TextView 的ID 
        );  
    }
    @Override
    protectedvoid onListItemClick(ListView l, View v,int position, long id)  {
        // TODO Auto-generated method stub
        Log.e("position","" + position);
        setTitle("你点击第"+position+"行");
    } 
    classClickEvent implementsOnClickListener {
        @Override
        publicvoid 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的图片、文字添加方式,本程序是一个图片一行文字


你可能感兴趣的:(android,ListView,object,layout,BT,encoding)