0

com.box.androidlib.Utils.BoxUtils.BoxFolderオブジェクトが与えられた場合、ルートからパスを取得するためにオブジェクトの親フォルダーを再帰的に処理したいと思います。

以下のコードのようなものでこれを実行したいと思います。ここで、currentBoxFolderは、含まれているサンプルコードのBrowseクラスで行われるようにBox.getAccountTree(…)を使用して取得されます。ただし、getParentFolderはnullを返します(null以外であると予想されるroot以外のフォルダーの場合)。

ソースを変更して追加の属性をフェッチすることで親変数を設定できる可能性があると思いますが、できました。助言がありますか?

List<BoxFolder> parentDirs = new ArrayList<BoxFolder>();
parentDirs.add(new BoxFolderEntry(currentBoxFolder));

BoxFolder parent = currentBoxFolder.getParentFolder();
while(parent != null)
{
    parentDirs.add(0, parent);
    parent = parent.getParentFolder();
}
4

1 に答える 1

1

ルートからフォルダへのパスを知ることが最終目標である場合、これを解決する方法はいくつかあります。

オプション1:

アプリケーションがそれらをフェッチするときに、folder_idsとfolder_namesの独自のマップを維持します。おそらく、currentBoxFolderのIDを取得するには、事前にすべての親に対してgetAccountTree()呼び出しを実行する必要があります。したがって、その場合は、2つのマップを維持できます。

フォルダID=>親フォルダID

フォルダID=>フォルダ名

これらの2つのマップから、ルートからのパスを常に取得できるはずです。

オプション2:

Box.getAccountTree()メソッドに追加できる2つのパラメーターがあり、パスを知ることができます。

"show_path_ids"

"show_path_names"

これらのパラメータはまだ文書化されていませんが(これを行います)、BoxFolder.getFolderPathIds()およびBoxFolder.getFolderPath()が次のような値を返します。

「/5435/4363」

「/bluefolder/greenfolder」

于 2013-02-23T00:14:05.890 に答える