移动应用开发 实验报告11 高级组件-ListView
一、实验目的 熟悉SimpleAdapter的用法; 掌握ListView的用法。
|
二、实验内容 通过SimpleAdapter类完成一个显示更加复杂效果的Listtview。 |
三、实验原理 SimpleAdapter类的主要功能是将List集合的数据转换为ListView可以支持的数据。在实例化SimpleAdapter类时会自动将在List集合中保存的数据以规定的模板进行数据的列表。Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的key,另一组保存Map的value. |
四、实验代码及结果 activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="25sp" android:gravity="center_horizontal" android:text="huzhou university" /> <ListView android:id="@+id/datalist" android:layout_width="fill_parent" android:layout_height="wrap_content"
/>
</LinearLayout>
data_list.xml: <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TableRow> <ImageView android:id="@+id/icon" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/icon" /> <TextView android:id="@+id/_id" android:textSize="15sp" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"
/> <TextView android:id="@+id/name" android:textSize="15sp" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"
/> </TableRow>
</TableLayout> Mainactivity.java: package com.example.ljy;
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ListView; import android.widget.SimpleAdapter;
public class MainActivity extends Activity { private String data[][]={ {"001","abc"},{"001","abc"}, {"001","abc"},{"001","abc"}, {"001","abc"},{"001","abc"}, {"001","abc"},{"001","abc"}, {"001","abc"},{"001","abc"}, }; private ListView datalist=null; private List<Map<String,String>>list=new ArrayList<Map<String,String>>(); private SimpleAdapter simpleAdapter=null;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.datalist=(ListView)super.findViewById(R.id.datalist); for (int x=0;x<this.data.length;x++){ Map<String,String>map=new HashMap<String,String>(); map.put("_id", this.data[x][0]); map.put("name", data[x][1]); this.list.add(map); } this.simpleAdapter=new SimpleAdapter(this,this.list, R.layout.data_list,new String[]{"_id","name"} ,new int[]{R.id._id,R.id.name} ); this.datalist.setAdapter(this.simpleAdapter); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
} |
五、试验分析(思考) 在实例化SimpleAdapter类时传入List集合中所保存的每一个Map的key和模板中组件定义的组件ID,SimpleAdapter类会自动将Map中保存的指定key的value内容设置到与之对应的组件中进行显示。 |