我搜索了这个主题,找不到我需要的东西,所以我不得不在这里寻求帮助。基本上,我有一个包含两个片段的布局。顶部片段显示联系人组,下部片段显示所有联系人(有或没有组)。当用户检查一个组时,应用程序会查找属于该组的所有联系人,并在下部片段中选中或取消选中这些联系人。
当用户选中或取消选中该组时,我需要更新联系人列表,不仅仅是查看(CheckedTextView),还需要更新数据(选中/取消选中)。问题是getListView().setItemChecked(position, value)只占据列表的位置。我有关于 Contact._ID 或 Contact.DisplayName 的信息,但不知道要更新列表的哪个位置。我也知道需要更新的项目的光标位置,但该位置值与列表的位置不同。结果,当组检查/未选中一个组时,请始终检查/未选中错误的联系人。
我已经尝试覆盖自定义 SimpleCursorAdapter 中的 bindView(),以便我可以切换 CheckedTextView,但它不会在屏幕上更新。
public void bindView(View view, Context context, Cursor cursor) {
String displayName = cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME_PRIMARY));
CheckedTextView tv = (CheckedTextView) view.findViewById(android.R.id.text1);
tv.setText(displayName);
if (selectedGroup != null && selectedGroup.containsKey(displayName)) {
tv.setChecked(true);
}
}
我可以看到调用了tx.setChecked(true),但未检查屏幕上受影响的行。
我需要向 CheckedTextView 添加一个侦听器吗?还是在调用 tv.setChecked 后我必须做更多事情?
非常感谢。