Android将联系人读取到LISTVIEW中遇到的问题!
最近在学习Android开发,学习到ListView控件使用的时候参考了《Android应用开发揭秘》中的代码,由于该书是基于Android 2.0进行编写的,其中的部分代码到了更新的Android平台就失效了。本程序的功能是将联系人添加到一个ListView中,并显示在屏幕上,当用户上下滚动选择项的时候会提示滚动到第几项,点击项目的时候也会提示点击了第几项。代码如下:package com.lu.listviewtest;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class ListViewTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
android.widget.ListView listview=(ListView)findViewById(R.id.ListView01);
Cursor cur=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
startManagingCursor(cur);
ListAdapter adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cur,
new String[] {PhoneLookup.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER},
new int [] {android.R.id.text1,android.R.id.text2});
listview.setAdapter(adapter);
listview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0,View arg1,int arg2,long arg3)
{
DisplayToast("滚动到第"+Long.toString(arg0.getSelectedItemId())+"项");
}
public void onNothingSelected(AdapterView<?> arg0)
{
}
});
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3)
{
DisplayToast("选中了第"+Integer.toString(arg2+1)+"项");
}
});
}
public void DisplayToast(String str){
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
}
书中new String[] {PhoneLookup.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER} ,这句的代码为:new String[] {PhoneLookup.DISPLAY_NAME,PhoneLookup.NUMBER},在2.0以上的平台已经失效了。
在执行onItemSelected函数的时候,我发现一个问题:比如屏幕上有3个联系人,滚动到第一项,提示1,滚动到第二项,提示的却是3,滚动到第三项,提示的却是5.。。这个是为什么呢?有人能解答么?不胜感激!!!