Android 中的ListVIew

来源:互联网 发布:万能搬家软件下载 编辑:程序博客网 时间:2024/06/04 01:10


在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

列表的显示需要三个元素:
1.ListVeiw 用来展示列表的View。
2.适配器  用来把数据映射到ListView上的中介。
3.数据    具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。


简单的ArrayAdapter代码


package com.example.listview;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.ArrayAdapter;import android.widget.CheckedTextView;import android.widget.ListView;import android.widget.Toast;public class ListViewActivity extends Activity {private ListView listView;private List<String> data = new ArrayList<String>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_list_view);listView = (ListView) findViewById(R.id.listview);data.add("北京");data.add("上海");data.add("青岛");data.add("武汉");data.add("南京");data.add("杭州");ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, data);listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);listView.setAdapter(adapter);listView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {CheckedTextView textView = (CheckedTextView) view;                Toast.makeText(ListViewActivity.this, textView.getText().toString(), 1).show();return true;}});}}

SimpleAdapter 代码

package com.example.simplelistview;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 MainActivity extends Activity {private ListView listView;private List<Map<String, Object>> listItem ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listItem = MyData.getData();listView = (ListView) findViewById(R.id.listview);SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, listItem,R.layout.list_items, new String[] {"pname","ptype" ,"price"},new int[] {R.id.name, R.id.type ,R.id.price});listView.setAdapter(adapter);}}

package com.example.simplelistview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MyData {    public static List<Map<String, Object>> getData(){    ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();        Map map1 = new HashMap();        map1.put("pname", "海信");        map1.put("ptype", "家电");        map1.put("price", "4000");                Map map2 = new HashMap();        map2.put("pname", "华为");        map2.put("ptype", "手机");        map2.put("price", "1000");                Map map3 = new HashMap();        map3.put("pname", "Iphone");        map3.put("ptype", "Pad");        map3.put("price", "4000");        data.add(map1);        data.add(map2);        data.add(map3);    return data;    }}

布局文件

<?xml version="1.0" encoding="utf-8"?><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"    android:orientation="horizontal" >    <TextView        android:id="@+id/name"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_weight="1"        android:text="TextView01"        android:textSize="20dip" />    <TextView        android:id="@+id/type"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/ItemTitle"        android:layout_weight="1"        android:text="TextView02" />    <TextView        android:id="@+id/price"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/ItemTitle1"        android:layout_weight="1"        android:text="TextView03" /></LinearLayout>



0 0