天天看点

Android学习笔记--ListView使用过程

第一教程: http://blog.csdn.net/hellogv/article/details/4542668

第二教程:http://blog.csdn.net/hellogv/article/details/4548659

上面这位大大说的很详细不,不过小弟是第一次使用ListView所以个人认为还是有必要记下来

重点:ListView中的一个小项目需要一个单独的XML来存放

上面的大大没有说点击事件,我研究了半天终于研究出来,特此那出来分享

献上我的界面

Android学习笔记--ListView使用过程

这里也是有一个图标和两个文本框

下面是主Activity的代码   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"
    >
    <ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="fill_parent"></ListView>
</LinearLayout>
           

下面是ListView中的每一行的 ls_itemview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:id="@+id/listViewItem" android:orientation="vertical">
  
    <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/linearLayout1" android:layout_marginBottom="10dip">
        <ImageView android:layout_width="wrap_content" android:src="@drawable/icon" android:id="@+id/listItemViewIcon" android:layout_height="50dip" android:layout_marginRight="10dip"></ImageView>
        <LinearLayout android:layout_height="fill_parent" android:id="@+id/linearLayout2" android:orientation="vertical" android:layout_width="fill_parent">
            <TextView android:text="TextView" android:layout_width="fill_parent" android:id="@+id/listItemViewTitle" android:layout_height="wrap_content" android:textSize="23dip"></TextView>
            <TextView android:text="TextView" android:layout_width="fill_parent" android:id="@+id/listItemViewText" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall"></TextView>
        </LinearLayout>
    </LinearLayout>
    
</LinearLayout>
           

下面是主程序源代码

package cn.Sollyu.ListViewTest2;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ListViewTest2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 找到主界面中的ListView控件
        ListView listView = (ListView)this.findViewById(R.id.listView1);
        
        // 定义一个数组,用来存放列表中的数据
        ArrayList<HashMap<String , Object>> listViewItemMaps = new ArrayList<HashMap<String, Object>>();
        
        for (int i = 0;i<30;i++){ // 插入30个数据
        	HashMap<String , Object> hashMap = new HashMap<String, Object>();
        	
        	// 第一个为 图标 标识 ,ListIcon 可自定义,下同
        	hashMap.put("ListIcon", R.drawable.test);
			new String();
			hashMap.put("ListTitle", String.valueOf(i));
        	hashMap.put("ListItemText", "I'm Sollyu");
        	
        	// 添加到列表
        	listViewItemMaps.add(hashMap);
        }
        
        SimpleAdapter simpleAdapter = new SimpleAdapter(
        		this,	// 这个没得说
        		listViewItemMaps,  // 列表数据
        		R.layout.ls_itemview,  // 列表的格式,就是单独的XML文件,注意是layout中的
        		new String[]{"ListIcon","ListTitle","ListItemText"},// 对应的格式,我的是 :图标、标题、内容
        		new int[]{R.id.listItemViewIcon, R.id.listItemViewTitle,R.id.listItemViewText}// 对应实现的ID号
        );
        listView.setAdapter(simpleAdapter);
        
        // 添加单击事件
        listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
/*
				要想实现单机获得列表中的内容,就要先找到视图对象,然后再获得内容
				这里我就获得标题的内容、 我的列表行布局格式为  
<LinearLayout> -------------> 主Activity 
	<LinearLayout>	----------> 包裹图像及两个文本框	第0个子项目
			<ImageView>	-------> 图标								第0个子项目
			<LinearLayout>	----> 包裹两个文本框				第1个子项目
				<TextView> ------> 标题								第0个子项目
				<TextView> ------> 内容								第1个子项目
			</LinearLayout>
	</LinearLayout>
</LinearLayout>
*/
				// 获得主Activity
				LinearLayout lr=(LinearLayout)arg1;
				// 获得第二个Activity
				lr =(LinearLayout) lr.getChildAt(0);
				// 获得文本框的父级的Activity
				lr =(LinearLayout) lr.getChildAt(1);
				// 第一个为标题,所以是0
	            TextView mText=(TextView)lr.getChildAt(0); 
	            
	            Toast.makeText(ListViewTest2Activity.this, "你點擊了第"+arg2+"項的"+mText.getText().toString(),
	                    1000).show();
			}
        	
		});
      
    }
}
           

说的够详细了