创建listview有2种方式
1>直接使用ListView进行创建
2>让Activity继承ListActivity
下面是listview常用的一些属性
案例:
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list); ListView lv = (ListView) findViewById(R.id.lv); String[] names = new String[]{ "张三", "李四", "wangwu", "赵六" }; lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, names)); } }
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
这里使用ArrayAdapter指定了一个textViewResourceId,它代表listview中每个item的外观形式
基于ListActivity实现的列表
如果一个窗口仅仅要显示一个列表,可以直接让activity继承ListActivity,并且无需调用setContentView()来指定某个界面,而是通过传入一个Adapter显示列表信息
也就是说它可以没有布局文件
public class MainActivity2 extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] names = new String[] { "张三", "李四", "wangwu", "赵六" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, names); setListAdapter(adapter); } }
当然也可以给他指定一个布局setContentView(R.layout.xxx),但是listview属性必须指定一个id: android:id="@+id/android:list"; 否则运行报错
使用SimpleAdapter创建ListVIew
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list); ListView lv = (ListView) findViewById(R.id.lv); String[] names = new String[] { "张三", "李四", "wangwu", "赵六" }; List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); for (int i = 0; i < names.length; i++) { Map<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("name", names[i]); data.add(hashMap); } lv.setAdapter(new SimpleAdapter(this, data, R.layout.list, new String[] { "name" }, new int[] {R.id.tv})); } }
xml
<TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>