android自定义联系人视图
我正在尝试为android上的应用程序创建自定义联系人视图。 下面的代码是我在搜索主题时在网站上找到的。 我遇到了一个例外,我不知道为什么 这是contact类: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
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);
}
}