我想制作联系人选择器并从developer.android.com下载示例应用程序 - 现在我正在尝试添加联系人列表的复选框。
然而,我发现当我尝试scolling时,随机复选框设置。
经过一周的搜索,我了解到这是因为回收了视图,并发现许多文章解决了getView()的问题。
但是,我不能使用为getView()显示的答案和示例,因为我的代码 - 最初来自developer.android.com - 正在使用newView(),bindView()。
我还找到了一些答案,建议在数据库中添加一个关于是否已检查的布尔数的新列,但是我从Caontacts获取数据,因此我无法修改数据库。所以,我不能使用这个解决方案。
你能帮帮我吗?这是我的代码 - 与developer.android.com的示例几乎相同。 public void bindView(final View view, final Context context, final Cursor cursor) {
final ViewHolder holder = (ViewHolder) view.getTag();
final String photoUri = cursor.getString(ContactsQuery.PHOTO_THUMBNAIL_DATA);
final String displayName = cursor.getString(ContactsQuery.DISPLAY_NAME);
final int startIndex = indexOfSearchQuery(displayName);
if (startIndex == -1) {
holder.text1.setText(displayName);
if (TextUtils.isEmpty(mSearchTerm)) {
holder.text2.setVisibility(View.GONE);
} else {
holder.text2.setVisibility(View.VISIBLE);
}
} else {
final SpannableString highlightedName = new SpannableString(displayName);
holder.text2.setVisibility(View.GONE);
}
final Uri contactUri = Contacts.getLookupUri(
cursor.getLong(ContactsQuery.ID),
cursor.getString(ContactsQuery.LOOKUP_KEY));
final CheckBox checkbox = (CheckBox)view.findViewById(R.id.checkbox);
final int position = cursor.getPosition();
checkbox.setOnCheckedChangeListener(null);
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
//// SHOULD I TO SOMETHING HERE???
}
});