实现列表显示数据需要三个步骤:用ListView来显示内容需要三点:
1、一个ListView
2、适配器用来把数据映射到ListView
3、数据源
一、ListView的实现两种方式:
1、继承ListActivity
import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.view.Menu; public class MainActivity extends ListActivity{ @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); } @Override public boolean onCreateOptionsMenu(Menumenu) { // Inflate the menu; this adds items to theaction bar if it is present. getMenuInflater().inflate(R.menu.main,menu); return true; } }
2、继承Activity,绑定ListView布局
import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class ListViewActivity extends Activity { @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); } @Override public boolean onCreateOptionsMenu(Menumenu) { // Inflate the menu; this adds items to theaction bar if it is present. getMenuInflater().inflate(R.menu.list_view,menu); return true; } }
对应的布局文件:activity_list_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="wrap_content" ></ListView>" </LinearLayout>
二、适配器类型:
适配器有4种:
1.ArrayAdapter最为简单,只能展示一行字。
package com.example.ListView_demo; import java.util.ArrayList; import java.util.List; import com.example.list_demo.R; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.ListView; /* * @Author AuthorK * 用ArrayAdapter来实现列表显示文本 */ public class ArrayAdapterList extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listView=new ListView(this); /* * 上面代码使用了ArrayAdapter(Context context, int textViewResourceId, * List<T> objects)来装配数据,要装配这些数据就需要一个连接ListView视图对象 * 和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this, * 布局文件(注意这里的布局文件描述的是列表的每一行的布局, * android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字, * 数据源(一个List集合)。同时用setAdapter()完成适配的最后工作 */ listView.setAdapter(new ArrayAdapter<String>( this,android.R.layout.simple_list_item_1,getData())); setContentView(listView); } private List<String> getData() { List<String> list=new ArrayList<String>(); list.add("ArrayAdapter例子"); list.add("陈奕迅"); list.add("MayDay"); return list; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.array_adapter_list_view, menu); return true; } }
2、SimpleAdapter有最好的扩充性,可以自定义出各种效果。
package com.example.ListView_demo; import java.util.*; import com.example.list_demo.R; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.view.Menu; import android.widget.SimpleAdapter; public class SimpleAdapterList extends ListActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.item1, new String[]{"info","img"}, new int[]{R.id.textView,R.id.imageView}); setListAdapter(adapter); } private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); //map.put("title", "G1"); map.put("info", "微信"); map.put("img", R.drawable.pic1); list.add(map); map = new HashMap<String, Object>(); //map.put("title", "G2"); map.put("info", "QQ"); map.put("img", R.drawable.pic2); list.add(map); map = new HashMap<String, Object>(); //map.put("title", "G3"); map.put("info", "截图"); map.put("img", R.drawable.pic3); list.add(map); return list; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.simple_adapter_list, menu); return true; } }
3、SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
4、自定义适配器(通过继承抽象类BaseAdapter)
三、数据源
1、本地数据源
2、网络数据源