我制作了一个自定义 CursorAdapter,用于在一行中显示联系人照片、姓名和 ID。
我已经覆盖了 getView() 方法,依此类推,一切正常。我现在的问题是,适配器用联系人 1-8 填充我的列表并重复它。-> 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8 。这是仅获得 1 到 8 位置的结果,但我不明白为什么,因为这是 CursorAdapter 的一部分,它位于父类中并且应该可以工作。
将我的 CustomAdapter 更改为普通的 SimpleCursorAdapter 以正确的形式显示所有联系人。
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
LayoutInflater vi;
View v;
CheckBox box;
v = convertView;
if (v == null) {
vi = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.gallery_item_layout, null);
ImageView image = (ImageView) v.findViewById(R.id.contactImage);
TextView tv = (TextView) v.findViewById(R.id.contactName);
Cursor cursor = (Cursor) getItem(position);
String id = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
tv.setText(position+" "+id+" "
+ cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
String photoID = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
if (photoID != null) {
Uri photoUri = ContentUris.withAppendedId(
ContactsContract.Data.CONTENT_URI,
Long.parseLong(photoID));
image.setImageURI(photoUri);
}
box = (CheckBox) v.findViewById(R.id.checkBox);
box.setTag(id);
box.setOnCheckedChangeListener(this);
}
return v;
}
我的代码有什么问题?