android自定义联系人视图

android自定义联系人视图,android,view,contacts,Android,View,Contacts,我正在尝试为android上的应用程序创建自定义联系人视图。 下面的代码是我在搜索主题时在网站上找到的。 我遇到了一个例外,我不知道为什么 这是contact类: public class Contact { public Contact(long id, String name, String photo) { this.id = id; this.name = name; this.photo = photo; } public long id; public Str

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

这是contact类:

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;
}

}

有人能看到问题吗?

请发布所有LogCat错误,这样我们就可以看到发生了什么。注意,您应该能够将
getItem()
转化为一个有用的函数,使用
返回contactList.get(position)
并将返回类型从
Object
更改为
Contact
。10-18 17:30:52.713:E/AndroidRuntime(568):致命异常:main 10-18 17:30:52.713:E/AndroidRuntime(568):java.lang.UnsupportedOperationException:addView(视图,布局参数)在AdapterView 10-18 17:30:52.713:E/AndroidRuntime(568)中不受支持:在android.widget.AdapterView.addView(AdapterView.java:471)10-18 17:30:52.713:E/AndroidRuntime(568):在android.view.LayoutInflater.inflate(LayoutInflater.java:497)10-18 17:30:52.713:E/AndroidRuntime(568):在android.view.LayoutInflater.java:396)10-18 17:30:52.713:E/AndroidRuntime(568):在android.view.LayoutInflater.inflate(LayoutInflater.java:352)10-18 17:30:52.713:E/AndroidRuntime(568):在com.ETtech.android.ContactsAdapter.getView(ContactsAdapter.java:62)10-18 17:30:52.713:E/AndroidRuntime(568):在android.widget.AbsListView.obtainView(AbsListView.java:2033)10-18 17:30:52.713:E/AndroidRuntime(568):在android.widget.ListView.MakeanddView(ListView.java:1772)10-18 17:30:52.713:E/AndroidRuntime(568):在android.widget.ListView.fillDown(ListView.java:672)10-18 17:30:52.713:E/AndroidRuntime(568):在android.widget.ListView.fillFromTop(ListView.java:732)10-18 17:30:52.713:E/AndroidRuntime(568):在android.widget.ListView.layoutChildren(ListView.java:1611)10-18 17:30:52.713:E/AndroidRuntime(568):在android.widget.AbsListView.onLayout(AbsListView.java:1863)10-18 17:30:52.713:E/AndroidRuntime(568):在android.view.view.view.view.layout(11278)10-18 17:30:52.713:E/AndroidRuntime(568):在android.view.view.ViewGroup.layout(ViewGroup.java:4224)
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);
}
}