开发中如果我们的数据是对象集合那么要列表显示:ListView
private class Myadapter extends BaseAdapter { private Context context; private List<Person> list; private LayoutInflater li; public Myadapter(Context context, List<Person> list) { // TODO Auto-generated constructor stub this.context = context; this.list = list; li = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return list.size();//此处是告知系统有多少条记录需要显示,如果返回0的话界面将不显示任何数据 } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } <span style="white-space:pre"> </span>//每个条目显示都会调用下面的方法,为了节省内存,条目索引在屏幕中的时候创建,滚动消失后销毁。 @Override public View getView(int arg0, View arg1, ViewGroup arg2) { View v = li.inflate(R.layout.activity_main, null); TextView tv1 = (TextView) v.findViewById(R.id.tv_1); TextView tv2 = (TextView) v.findViewById(R.id.tv_2); TextView tv3 = (TextView) v.findViewById(R.id.tv_3); Person p = list.get(arg0); tv1.setText(p.getName()); tv2.setText(p.get_id()+""); tv3.setText(p.getAge()+""); return v; } }
4 10-通话记录列表显示************
import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.CallLog.Calls; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import com.itcast.calls.domain.CallInfo; public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView lv = getListView(); List<CallInfo> callInfos = new ArrayList<CallInfo>(); //如何查询Calls表 通过内容提供者对外暴露了 ContentResolver cr = getContentResolver(); Uri uri = Uri.parse("content://call_log/calls"); Cursor c = cr.query(uri, new String[]{"number","date","type"}, null, null, "date desc"); while(c.moveToNext()){ String number = c.getString(0); long date = c.getLong(1); int type = c.getInt(2); CallInfo callInfo = new CallInfo(number, date, type); callInfos.add(callInfo); } c.close(); MyAdapter adapter = new MyAdapter(this, callInfos); lv.setAdapter(adapter); } private class MyAdapter extends BaseAdapter{ private Context context; private List<CallInfo> callInfos; private LayoutInflater mInflater; public MyAdapter(Context context, List<CallInfo> callInfos) { super(); this.context = context; this.callInfos = callInfos; mInflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return callInfos.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view = mInflater.inflate(R.layout.item, null); TextView tv_number = (TextView) view.findViewById(R.id.tv_number); TextView tv_date = (TextView) view.findViewById(R.id.tv_date); TextView tv_type = (TextView) view.findViewById(R.id.tv_type); CallInfo callInfo = callInfos.get(position); tv_number.setText(callInfo.number); //日期格式化 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String dateStr = format.format(callInfo.date); tv_date.setText(dateStr); String typeStr = null; switch (callInfo.type) { case Calls.INCOMING_TYPE://来电 typeStr = "来电"; break; case Calls.OUTGOING_TYPE://去电 typeStr = "去电"; break; case Calls.MISSED_TYPE://未接 typeStr = "未接"; break; default: break; } tv_type.setText(typeStr); return view; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
作业:
短信 :packages\providers\TelephonyProvider 源代码的位置
短信列表显示
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends Activity { private ContentResolver resolver; private LayoutInflater mInflater; private ListView lv = null; private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_smslist); mInflater = LayoutInflater.from(this); resolver = getContentResolver(); readSms(); lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { Map<String, String> map = list.get(position); View view = mInflater.inflate(R.layout.item, null); TextView tv_number = (TextView) view.findViewById(R.id.tv_number); TextView tv_content = (TextView) view.findViewById(R.id.tv_content); String type=map.get("type").equals("1")?"Send From:":"Send To:"; tv_number.setText(type+map.get("number")); tv_content.setText(map.get("body")); return view; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } }); } public void readSms(){ Uri uri = Uri.parse("content://sms"); Cursor c = resolver.query(uri, new String[] { "address", "date", "type", "body", "date_sent" }, null, null, null); if (c != null) { while (c.moveToNext()) { Map<String, String> map = new HashMap<String, String>(); map.put("number", c.getString(c.getColumnIndex("address"))); map.put("body", c.getString(c.getColumnIndex("body"))); map.put("type", c.getString(c.getColumnIndex("type"))); list.add(map); } } } }