0

ここで、ListFragment 内のコード (コンテキスト メニューを使用しています):

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
            .getMenuInfo();
    Log.d(TAG, "onContextItemSelected clicked");
    long id = info.id;
    Log.d(TAG, "list id " + id);

    int menuItemIndex = item.getItemId();
    Log.d(TAG, "menuItemIndex " + menuItemIndex);
    if (menuItemIndex == 0) {
        try {
            plantManager.deletePlantRelation(id);
            CharSequence text = getActivity().getString(
                    R.string.info_could_delete_plant);
            Toast toast = Toast.makeText(getActivity(), text,
                    Toast.LENGTH_LONG);
            toast.show();
            loader = getLoaderManager().restartLoader(0, null, this);
            myAdapter.notifyDataSetChanged();
        } catch (Exception ex) {
            ex.printStackTrace();
            CharSequence text = getActivity().getString(
                    R.string.info_could_not_delete_plant);
            Toast toast = Toast.makeText(getActivity(), text,
                    Toast.LENGTH_LONG);
            toast.show();
        }
    }
    return true;
}

メソッドが実行され、Toast-Message が表示されますが、リストが更新されません。

あなたの助けを楽しみにしています。

前もって感謝します!

アップデート:

public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {

        return new CursorLoader(getActivity()) {
            @Override
            public Cursor loadInBackground() {
                myCursor = plantManager.fetchPlantRelations();
                return myCursor;
            }
        };
    }
4

1 に答える 1

0

LoaderManagerでのリセットとアダプターでのnotifyDataSetChanged の両方を行う必要がないだけでなく、どちらも行う必要はありません。これを行う正しい方法は、fetchPlantRelations() によって返されるカーソルが特定の URI での通知用に登録されていることを確認することです。次に、基礎となるデータセットへの変更 (deletePlantRelation によるものなど) がその URI に通知されるようにすると、残りは完全に自動的に行われます。ここでコードをチェックしてください:

https://github.com/marakana/yamba/blob/yambaII/YambaService/src/com/marakana/android/yamba/svc/data/YambaProvider.java

特に、182 行目と 242 行目を見てください。

于 2013-02-28T21:14:10.510 に答える