ListView应用------ListView控件显示List集合中的数据,并对Item响应选择事件(法一)

本文介绍如何在Android中利用SimpleAdapter将List<Map<String, Object>>数据绑定到ListView,并展示天气预报的天气图标和天气情况。通过继承Activity,设置布局文件activity_main.xml和items.xml,然后在ListView.java中处理数据并创建SimpleAdapter实例,实现了ListView的填充和点击事件响应。" 110529761,10295105,百度与高德地图经纬度坐标系转换实战,"['地图服务', '地理信息系统', '编程赋能', '坐标转换']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本例采用该类继承Activity+simpleAdapter实现的方式
这是天气预报的一个截图效果
1>  activity_main.xml文件
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ListView 
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        </LinearLayout>   
</LinearLayout>

2> items.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" 
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="1dp"
    android:paddingBottom="1dp">
     <ImageView
		android:id="@+id/img1"
		android:layout_height="60dip"
		android:layout_width="60dip"
		/>
	<ImageView 
		android:id="@+id/img2"
		android:layout_height="60dip"
		android:layout_width="60dip" 
	/>
	<TextView 
		android:id="@+id/TextView01"
		android:text=""
		android:layout_height="120dip"
		android:layout_width="120dip"
	/>
</LinearLayout>
/*******ListView.java************/
package com.zouxiaojia.tabtest;

import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.TextView.BufferType;

public class TabTest extends Activity {

	List<Map<String,Object>> listData;
	private ListView listView1;

	/*1这里通过TabSpecs类创建Tab
	2.使用setIndicator方法设置tab的文字
	3.使用setContent设置tab的内容
	4.如果你使用TabActivity作为你的Activity的基类,你不用调用TabHost.Setup()方法。
	*/@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		try{
			listView1=(ListView) this.findViewById(R.id.listView1);
			//获取天气预报获取的对象的各种数据
			WebServiceHelper webservicetest = new WebServiceHelper();
			WeatherBean mybean=webservicetest.getWeatherByCity("武汉");
			listData=mybean.list;
			
			//将Tab1的界面视图组件和获得的处理过的数据绑定
			SimpleAdapter mAdapter=new SimpleAdapter(TabTest.this, listData, 
				R.layout.tab1_items,new String[]{"icon1","icon2","weatherDay"} , 
				new int[]{R.id.img1,R.id.img2,R.id.TextView01});
				listView1.setAdapter(mAdapter);
				//String[]中存放对应在listData中"icon1","icon2","weatherDay"三个参数的资源如R.drawable.a_1,string类型的天气
				//int[] 对应Tab1_items.xml文件imageview和textview的ID.
		}catch(Exception ex){
			ex.printStackTrace();
			Log.d("EXCEPTION", ex.getMessage());
		}
	}
}
/****************************************8
/*listData是一个List<Map<String,Object>>list的数据,里面有三组数据(今天,明天,后天),每组数据包括img1(天气图标一),img2(天气图标二),string(天气情况).每一组数据对一ListView的一行数据,只有取出数据后装载入map,再装入simpleadapter将对应的resID关联到R.id.img1,R.id.img2,R.id.textview.
实现思想如下:
Map<String,Object>map=new HashMap<String,Object>();
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
map.put("weatherDay",weatherToday);
/icon1_ID是对webservice获取的soapObject对应图片的字符串解析后得到的resID,便于在R.drawable中查找对应的图片
//三天不同的天气情况对应的读图片字符串都不同
map.put("icon1", icon1_ID);/
map.put("icon2", icon2_ID);
list.add(map);

map=new HashMap<String,Object>(); 
map.put("weatherDay", weatherTomorrow);
map.put("icon1", icon1_ID);
map.put("icon2", icon2_ID);
list.add(map);

map=new HashMap<String,Object>(); 
map.put("weatherDay",weatherToday);
map.put("icon1", icon1_ID);
map.put("icon2", icon2_ID);
list.add(map);
*/
******************************************************/
/*WeatherBean.java*/
package com.zouxiaojia.tabtest;

import java.util.List;
import java.util.Map;

//定义该类存储一些属性
public class WeatherBean{
	public String CityName;
	public List<Map<String,Object>>list;
	public void setList(List<Map<String,Object>>list){
		this.list=list;
	}
	public String CityDescription;
	public void setCityDescription(String cityDescription){
		CityDescription=cityDescription;
	}
	public String LiveWeather;
	public void setCityName(String cityName){
		CityName=cityName;
	}
	public void setLiveWeather(String liveWeather){
		LiveWeather=liveWeather;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值