ListView控件用于条目显示
1.重要属性
1.android:statckFromBotom
设置是否重底端排列条目
2.android:transcriptMode
设置控件滚动模式
disabled:关闭滚动,不设置为默认normal
normal:控件收到数据改变通知,显示滚动到界面最后一项
alwaysScroll:控件自动滚动底端
3.android:divider
设置每项之间间隔图片。比如:android:divider="@android:color/transparent"之间白线相隔,如果背景是白色,相当于把之间间隔线去掉
4.android:dividerHeight
设置分割线高度
5.android:drawSelectorOnTop
为true单击条目,显示条目背景颜色,把内容遮住,false单击条目,显示条目颜色,成为背景色,不遮住内容
2.重要方法
setAdapter
用于设定适配器,与ListView控件连接在一起。可以用在ArrayAdapter、SimpleAdapter等中
3.监听器
setOnItemClickListener
监听点击条目事件
以下举个简单例子,用SimpleAdapter与ArrayAdapter这两种适配器进行阐述
下面用SimpleAdapter适配器进行实现,对List集合的多个对象进行数据绑定。
创建两个布局文件,一个是主布局,一个是条目显示内容布局;
主布局文件
条目内容布局文件<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" tools:context=".MainActivity" > <LinearLayout android:id="@+id/lineralayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbars="vertical" /> </LinearLayout> </LinearLayout>
测试类<?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:orientation="horizontal" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="1dp" android:paddingBottom="1dp" > <TextView android:id="@+id/textview_user" android:layout_width="180dp" android:layout_height="30dp" android:textSize="10pt" android:singleLine="true" /> <TextView android:id="@+id/textview_ip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textSize="10pt" android:gravity="right" /> </LinearLayout>
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = (ListView) findViewById(R.id.listview); ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); HashMap<String, String> map1 = new HashMap<String, String>(); HashMap<String, String> map2 = new HashMap<String, String>(); //设置值 map1.put("user", "张三"); map1.put("ip", "192.168.155.1"); map2.put("user", "李四"); map2.put("ip", "192.168.111.1"); //加入集合 list.add(map1); list.add(map2); String[] str = new String[]{ "user", "ip" }; SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.user, str, new int[]{R.id.textview_user, R.id.textview_ip}); lv.setAdapter(listAdapter); //侦听点击条目 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("id-----" + id); System.out.println("position-----" + position); } }); } }
下面用ArrayAdapter适配器进行实现,用于与数组进行数据绑定。
创建两个布局文件,一个主布局文件,一个条目内容布局文件主布局文件
条目布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
测试类,其中采用ArrayAdapter进行数据绑定,调用setAdapter方法与监听器绑定<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textview_user" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="10pt" android:singleLine="true" />
public class MainActivity extends Activity { ArrayList<String> list = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = (ListView) findViewById(R.id.listview); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_view, getData()); lv.setAdapter(adapter); //侦听点击条目 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView tv = (TextView) view; Toast.makeText(MainActivity.this, tv.getText(), 0).show(); } }); } private ArrayList<String> getData() { list.add("画画"); list.add("读书"); list.add("写字"); return list; } }