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, 
nullnullnullnull);
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.。。这个是为什么呢?有人能解答么?不胜感激!!! 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值