gpt4 book ai didi

android - 如何实现 ContentObserver?

转载 作者:太空狗 更新时间:2023-10-29 14:13:37 24 4
gpt4 key购买 nike

我有一个 ContentProvider ,我正在使用它来填充我的 ListView。我需要单击其中一个 menu-item。它更新了我的数据集,但我需要在 ListView 中反射(reflect)更改。我阅读了有关 ContentObserver 的信息,但我仍然对如何实际实现它感到困惑。这是我的代码。

MYContentObserver

@SuppressLint("NewApi")
public class MyObserver extends ContentObserver {
public MyObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
List<Contact> newData;
if(CONTACT_TYPE == VOIP_CONTACTS){
newData = ContactsManager.getVoipContacts(getActivity());
}else{
newData = ContactsManager.getAllContacts(getActivity());
}
customAdapter.contacts().clear();
customAdapter.contacts().addAll(newData);
customAdapter.notifyDataSetChanged();
}
}

我正在我的 onCreate 中注册它,例如:

getActivity().getContentResolver().registerContentObserver(MyContentProvider.CONTENT_URI, true, myObserver);

现在呢???那是吗?或者我需要调用一些方法等??

**Edite**

我的内容提供者中的更新方法是:

       @Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = 0;
switch (uriMatcher.match(uri)){
case CONTACT:
count = db.update(CONTACTS_TABLE_NAME, values,
selection, selectionArgs);
break;
case CONTACT_ID:
count = db.update(CONTACTS_TABLE_NAME, values, _ID +
" = " + uri.getPathSegments().get(1) +
(!TextUtils.isEmpty(selection) ? " AND (" +
selection + ')' : ""), selectionArgs);
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri );
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}

在我的 onOptionItemSelected 中,点击其中一项,m 更新如下:

getActivity().getContentResolver().update(ContactsContentProvider.CONTENT_URI, values, where, null);

最佳答案

我觉得没问题,每次你的 URI CONTENT_URI 更新(插入、删除或修改)你的 ContentObserver 应该被触发,如果你的 onChange( ) 方法未被调用,请确保您在 ContentProvider 中指向正确的 URI。

您应该添加的一件事是取消注册您的内容观察器,在您的 onPause() 方法中您应该执行以下操作:

getContentResolver().unregisterContentObserver(myObserver);

希望对您有所帮助!

关于android - 如何实现 ContentObserver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24670806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com