1.android中使用simpleadapter创建自定义的listview
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"
>
<!-- 定义一个List -->
<ListView android:id="@+id/mylist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<!-- 定义一个ImageView,用于作为列表项的一部分。 -->
<ImageView android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
/>
<!-- 定义一个TextView,用于作为列表项的一部分。 -->
<TextView android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:gravity="center_vertical"
android:paddingLeft="10dp"
/>
</LinearLayout>
android java部分
package com.example.simpleadaptertest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class SimpleadapterMainActivity extends Activity {
private String[] names = new String[]
{ "虎头", "弄玉", "李清照", "李白"};
private int[] imageIds = new int[]
{ R.drawable.tiger , R.drawable.nongyu
, R.drawable.qingzhao , R.drawable.libai};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simpleadapter_main);
//创建一个List集合,List集合的元素是Map
List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
for (int i = 0; i < names.length; i++)
{
Map<String, Object> listItem = new HashMap<String, Object>();
listItem.put("header", imageIds[i]);
listItem.put("personName", names[i]);
listItems.add(listItem);
}
//创建一个SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(this
, listItems
, R.layout.activity_simpleadapter_main
, new String[]{ "personName", "header" }
, new int[]{R.id.name , R.id.header});
ListView list = (ListView)findViewById(R.id.mylist);
//为ListView设置Adapter
list.setAdapter(simpleAdapter);
}
}
listItem.put("header", imageIds[i]);
listItem.put("personName", names[i]);
将图片资源(int)和说明(String)作为Object参数统一传过来。比较统一。
2.汉柏天气预报系统中
循环从配置文件中读取键值对
class TimerTaskMine extends TimerTask{
private static GetInfo get;//调用静态方法从GetInfo类中获取网页信息
private OperateMysql operate=new OperateMysql();
@Override
public void run() {//此计时器任务要执行的操作。
//Properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
Properties prop = new Properties();//Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
InputStream inputStream = new TestWeather().getClass().getResourceAsStream("/weather_code.properties");//获取src同级目录下properties的文件流
try {
prop.load(inputStream);//从输入流中读取属性列表
// System.out.println(prop.getProperty("101020100"));
Enumeration<?> en = prop.propertyNames();//返回属性列表中所有键的枚举
String obj = "";//obj置空
//构造器,创建OperateMysql对象
operate.transferMysql();//将临时表内容转移到历史表
System.out.println("transfer over!");
operate.truncateMysql();//清空数据库数据表内容
System.out.println("truncate over!");
while (en.hasMoreElements()) {//测试此枚举是否包含更多的元素。
obj = (String) en.nextElement();//obj即为weather_code.properties中获得的城市代码
// System.out.println(obj);
// get.getInfo(Integer.parseInt(obj));
get = new GetInfo();
// System.out.println(obj.);
Object[] data = get.getInfo(obj);//开始获取城市键值对应的相应城市信息
if(null!=data) {
//把数据插入到数据库
operate.insertMysql(obj, data);
}
}
} catch (IOException e) {//抓住IO错误
e.printStackTrace();//打印
} finally {
// 关闭IO资源
try {
if (null != inputStream)//如果inputStream非空
{
inputStream.close();//关闭inputStream
inputStream = null;//inputStream置空
}
} catch (IOException e) {//抓住IO错误
e.printStackTrace();//打印
}
}
operate.update99Mysql();//处理99的异常问题
operate.updateBeijing();//解决ANDROID端的简略省份city_id需求
operate.updateTianjin();
operate.updateShanghai();
operate.updateChongqin();
System.out.println("99的异常处理结束,所有img2为99的值都替换为对应的img1的值");//99问题异常处理
}
}