Apidemos-->Views-Lists-Cursor(people)学�
package com.example.testmyviewslistscursorpeople; import java.util.ArrayList;
import java.util.List; import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.net.LocalSocketAddress.Namespace;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.text.GetChars;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView; import com.example.testmyviewslistsactivateitems.R; /**
*
* @author Administrator 仿效果slow loading apiDemos -- Views -Lists - Slow Adapter
*/
public class Main extends ListActivity { private boolean mBusy = false;
public static List<String> mStrings = new ArrayList<String>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPeople();
setListAdapter(new SlowAdapter(this));
// 设置选择模式为单选
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
// 首次载入设置选中items
getListView().setItemChecked(0, true);
getListView().setOnScrollListener(new OnScrollListener()); } protected class OnScrollListener implements ListView.OnScrollListener { @Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
// The view is not scrolling.
case OnScrollListener.SCROLL_STATE_IDLE:
mBusy = false;
int first = view.getFirstVisiblePosition();
int count = view.getChildCount();
for (int i = 0; i < count; i++) {
TextView t = (TextView) view.getChildAt(i);
if (t.getTag() != null) {
t.setText(mStrings.get(first + i));
t.setTag(null);
}
}
break;
// The user is scrolling using touch, and their finger is still on
// the screen
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
mBusy = true;
break;
// The user had previously been scrolling using touch and had
// performed a fling.
// The animation is now coasting to a stop
case OnScrollListener.SCROLL_STATE_FLING:
mBusy = true;
break;
}
} @Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
} } @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
getListView().setItemChecked(position, true);
} // 自己定义适配器
private class SlowAdapter extends BaseAdapter {
private LayoutInflater mInflater; public SlowAdapter(Context context) {
mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} @Override
public int getCount() {
return mStrings.size();
} @Override
public Object getItem(int position) {
return position;
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text; if (convertView == null) {
text = (TextView) mInflater.inflate(R.layout.main, null, false);
} else {
text = (TextView) convertView;
} if (!mBusy) {
text.setText(mStrings.get(position).toString());
text.setTag(null);
} else {
text.setText("Loading...");
text.setTag(this);
}
return text;
} } protected void getPeople() {
final String[] CONTACT_PROJECTION = new String[] { Contacts._ID,
Contacts.DISPLAY_NAME, };
Cursor mCursor = getContentResolver().query(Contacts.CONTENT_URI,
CONTACT_PROJECTION, null, null, null);
while(mCursor.moveToNext()) {
String name =
mCursor.getString(mCursor.getColumnIndex(Contacts.DISPLAY_NAME));
mStrings.add(name);
}
mCursor.close();
}
}
protected void getPeople() {
final String[] CONTACT_PROJECTION = new String[] { Contacts._ID,
Contacts.DISPLAY_NAME };
//联系人
Cursor mCursor = getContentResolver().query(Contacts.CONTENT_URI,
CONTACT_PROJECTION, null, null, null);
//联系人电话
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID, null, null);
while (mCursor.moveToNext()) {
// 获取联系人
String name = mCursor.getString(mCursor
.getColumnIndex(Contacts.DISPLAY_NAME));
mStrings.add(name);
if (phones.moveToNext()) {
//获取电话
String phone = phones.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
mStrings.add(phone);
}
}
//关闭资源
mCursor.close();
phones.close();
}
Apidemos-->Views-Lists-Cursor(people)学�的更多相关文章
- JAVA反射机制学�
JAVA反射机制:对于随意一个类,都可以知道这个类的全部属性和方法:对于随意一个对象,都可以调用它的随意一个方法和属性:这样的动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. J ...
- 工作vs.学�
近一两年来,我先后对[工作与学习]的复杂过程有过多次的头脑风暴,而且感觉在这方面略有所成(看这里和这里):当然既然仅仅是头脑风暴,所谓的所成也仅仅是一些粗糙的想法,一些没有实证过的如果,算是积累而已, ...
- AJAX基础知识点学�
1.AJAX(Asynchronous JavaScript and XML)即,异步JavaScript和XML 2.同步/异步差别 同步: ①每次进行整个页面的刷新 ②同步的链接在同一时间仅仅能有 ...
- Tuxedo入门学�
中间件介绍: 介于客户机和server之间的夹层,突破了传统的c/s架构,为构建大规模,高性能,分布式c/s应用程序提供了通信,事物,安全,容错等基础服务,屏蔽了底层应用细节,应用程序不必从底层开发, ...
- SSH深度历险(四) Maven初步学�
这几天接触这个词,非常多遍了,仅仅是浅显的体会到它在GXPT中的优点,功能之强大,又通过网络查询了资料进一步的认识学习了,和大家分享. Maven是基于项目对象模型(POM),能够通过一小段描写叙述信 ...
- ApiDemos-->Views-lists-slow adapter学习
今天来依照apidemos提供的方法来实现slow loading的效果. 简单说下实现方法: 实现ListView.OnScrollListener ,监听到手势滑动的情况,当处于滚动状态时,将新显 ...
- Python的平凡之路(19)
一.Django请求生命周期 对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端 ...
- Python之路【第十六篇续】Django进阶篇
Django请求生命周期 首先:对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端 路由系统 在Django的urls中我们可以根据一个URL对应一个函数名来定义路由规 ...
- Django web 基础
一.Django概述 Django大而全; 创建Django工程:django-admin startproject sitename 创建django之后生成的目录结构如下: Project Pro ...
随机推荐
- 【Bug笔记】The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
因为今天下载了一个eclipse se的版本号.所以想把原本eclipse ee这个软件外面的目录eclipse名字该成eclipse ee,方便以后的区分和管理.改了后又一次打开eclipse ee ...
- java单例模式(线程安全,效率高,双重推断)
这样的方法,在获取单利的时候,避免了线程锁,导致訪问该方法速度非常慢, 同是,防止了多线程同事房屋该方法就会产生多个实例的问题. 效率高.线程安全. public class TestInstance ...
- Spark技术内幕:Stage划分及提交源代码分析
当触发一个RDD的action后.以count为例,调用关系例如以下: org.apache.spark.rdd.RDD#count org.apache.spark.SparkContext#run ...
- SecureCRT学习之道:用SecureCRT来上传和下载数据
今天才知道,原来SecureCRT可以使用linux下的zmodem协议来快速的传送文件,而且还使用非常方便哦,我还傻傻的找其他软件来sftp,笨死了:(你只要设置一下上传和下载的默认目录就行opti ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级) 企业库提供了一个很强大的验证应用程序模 ...
- hdu - 4975 - A simple Gaussian elimination problem.(最大流量)
意甲冠军:要在N好M行和列以及列的数字矩阵和,每个元件的尺寸不超过9,询问是否有这样的矩阵,是独一无二的N(1 ≤ N ≤ 500) , M(1 ≤ M ≤ 500). 主题链接:http://acm ...
- hdu1869六度分离,spfa实现求最短路
就是给一个图.假设随意两点之间的距离都不超过7则输出Yes,否则 输出No. 因为之前没写过spfa,无聊的试了一下. 大概说下我对spfa实现的理解. 因为它是bellmanford的优化. 所以之 ...
- oracle 转 mysql 最新有效法(转)
关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...
- surfaceDestroyed什么时候被调用
今天看别人的代码,突然有个疑问,surfaceDestroyed这个函数什么时候被调用呢? 上网搜了一番,基本都说是surface被销毁的时候,才会调用surfaceDestroyed.问题又来了su ...
- 第1周 SQL Server 如何执行一个查询
原文:第1周 SQL Server 如何执行一个查询 大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Se ...