Android将联系人信息放到ListView时报空指针错误
Android将联系人信息放到ListView时报空指针异常
大家帮忙看一下,哪里有错。。。
代码如下
错误信息如下

------解决方案--------------------
适配器里面的getView方法,返回了NULL的视图,你想要DEBUG一下这个地方
------解决方案--------------------
哦 不好意思 看错了 你把findviewById前面加个对象convertView试试
大家帮忙看一下,哪里有错。。。
代码如下
package com.example.contactlist;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends ListActivity {
ListView listView = null;
Context myContext = null;
MyListAdapter myListAdapter = null;
List<String> myContactName = new ArrayList<String>();
List<String> myContactNumber = new ArrayList<String>();
public void onCreate(Bundle savedInstanceState) {
myContext = this;
listView = this.getListView();
//使用getContentResolver方法来读取联系人的表
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
while(cursor.moveToNext()){
//联系人的ID
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//联系人的名称
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//联系人的电话
String number = "";
//联系人是否有电话号码
int isHas = Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts. HAS_PHONE_NUMBER)));
if(isHas>0){
Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+" = " + id,null,null);
while(c.moveToNext()){
number += c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))+" ";
}
c.close();
}
myContactName.add(name);
myContactNumber.add(number);
}
cursor.close();
myListAdapter = new MyListAdapter(this);
setListAdapter(myListAdapter);
super.onCreate(savedInstanceState);
}
class MyListAdapter extends BaseAdapter {
public MyListAdapter(Context context){
myContext = context;
}
public int getCount() {
// TODO Auto-generated method stub
return myContactName.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView name = null;
TextView number = null;
if(convertView == null){
convertView = LayoutInflater.from(myContext).inflate(R.layout.list, null);
name = (TextView) findViewById(R.id.name);
number = (TextView) findViewById(R.id.number);
}
name.setText(myContactName.get(position));
number.setText(myContactNumber.get(position));
return convertView;
}
}
}
错误信息如下
------解决方案--------------------
适配器里面的getView方法,返回了NULL的视图,你想要DEBUG一下这个地方
------解决方案--------------------
哦 不好意思 看错了 你把findviewById前面加个对象convertView试试