android自定义联系人视图

时间:2012-10-18 16:38:48

标签: android view contacts

我正在尝试为Android上的应用创建自定义联系人视图。 以下代码是我在搜索主题时在网站上找到的代码。 我得到了一个例外,我不知道为什么。

这是联系人类:

public class Contact {
public Contact(long id, String name, String photo) {
    this.id = id;
    this.name = name;
    this.photo = photo;
}
public long id;
public String name;
public String photo;
public long getId() {
    return id;
}
public void setId(long id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPhoto() {
    return photo;
}
public void setPhoto(String photo) {
    this.photo = photo;
}
}

这是适配器的代码:

public class ContactsAdapter extends BaseAdapter {
Vector<Contact> contactList;
Activity activity;

public ContactsAdapter(Activity activity){
    this.activity = activity;
    fillContacts();
}

public void fillContacts() {
    Uri uri = ContactsContract.Contacts.CONTENT_URI;
    String[] projection = { ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.Contacts.PHOTO_ID };
    Cursor cursor = activity.managedQuery(uri, projection, null, null, null);
    contactList = new Vector<Contact>();
    if (cursor.moveToFirst()){
        do {
            contactList.add(new Contact(cursor.getLong(cursor.getColumnIndex(projection[0])), cursor.getString(cursor.getColumnIndex(projection[1])), cursor.getString(cursor.getColumnIndex(projection[2]))));
        }while (cursor.moveToNext());
    }
}

@Override
public int getCount() {
    return contactList.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return contactList.get(position).id;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view==null){
        LayoutInflater li = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = li.inflate(R.layout.contact, parent);
    }

    TextView contactName = (TextView)view.findViewById(R.id.etName);
    ImageView contactPhoto = (ImageView) view.findViewById(R.id.ivPhoto);
    CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkBox1);
    contactName.setText(contactList.get(position).name);

    if (contactList.get(position).photo == null){
        contactPhoto = (ImageView) view.findViewById(R.id.ivPhoto);
        contactPhoto.setImageResource(R.drawable.ic_launcher);
    }else{
        Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactList.get(position).id);
        Uri contactPhotoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY);
        contactPhoto.setImageURI(contactPhotoUri);
    }
    return view;
}

}

这是活动代码:

public class ContactsActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.contacts);
    ContactsAdapter ca = new ContactsAdapter(this);
    ListView contacts = (ListView) findViewById(R.id.lvContacts);
    contacts.setAdapter(ca);
}
}

任何人都可以看到问题吗?

0 个答案:

没有答案