这是我的代码:
package com.example.testview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
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 ListView lv ;
private List<person> persons;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
persons = new ArrayList<person>();
ContentResolver cr = this.getContentResolver();
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri uriData = Uri.parse("content://com.android.contacts/data");
Cursor cursor = cr.query(uri, new String[] {"contact_id"} , null, null, null);
while(cursor.moveToNext()){
String id = cursor.getString(0);
if(id != null){
Cursor dataCursor = cr.query(uriData, new String[]{"data1","mimetype"}, "raw_contact_id=?", new String [] {id}, null);
person per = new person() ;
while(dataCursor.moveToNext()){
String data = dataCursor.getString(0);
String mimetype =dataCursor.getString(1);
if("vnd.android.cursor.item/name".equals(mimetype)){
per.setName(data);
}else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)){
per.setNumber(data);
}
}
dataCursor.close();
persons.add(per);
}
}
cursor.close();
lv= (ListView) findViewById(R.id.lv);
lv.setAdapter(new myAdtapter() );
}
private class myAdtapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.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
person per =persons.get(position);
View view = View.inflate(getApplicationContext(), R.layout.contect_view, null);
TextView et_name = (TextView) findViewById(R.id.name);
TextView et_number = (TextView) findViewById(R.id.number);
et_name.setText(per.getName());
et_number.setText(per.getNumber());
return view;
}
}
}
我debug试了一下,发现persons一直没有显示,为空,就是说我每次传进去的数都没被写入persons,请指教。
抛出的是空指针异常