はちょうどそれが持っているのは、(List<Category>
)"Category"
と呼ばせて、私はオブジェクトのArrayListのを持っていると述べてみよう知らなくても、他の値を更新:Copare値とインデックス
get/setName
get/setImportance
get/setImage
これらの値から来ましたWebサービス(今のところget/setImportanceは常に0です。サーバーにはこの情報はありません)...しかし、このように、サービスには独自のソートがあります(必要な理由で機能しません)。
ユーザーは「重要度」をローカルで変更し、その重要度の位置で並べ替えることができます。
さんが言ってみましょう:レスポンスの名前-Server
:
*Name= Sports, Importance= 0
*Name= News, Importance= 0
*Name= Music, Importance= 0
*Name= Gaming, Importance= 0
ユーザーが重要(SharedPreferenceにそれ保存新しいローカルリスト)を与えたブタ:
*Name= Gaming, Importance= 1
*Name= News, Importance= 2
*Name= Sports, Importance= 3
*Name= Music, Importance= 4
私がする必要がありますサーバー情報を更新する(値の一部は3時間ごとに変更される)が、重要な並べ替えを保持する必要があるため、ユーザーがアプリケーションを開くたびにカスタム並べ替えが行われます。
元のArrayListの値 "重要度"を更新するには、サーバーのArrayListとSharedPreferenceのローカルリスト(HashMap、List、do not care)を比較する必要があります。両方のリストの「名前」を比較して私は両方の場合にインデックスを知らない。
どのような方法が最適ですか?一致すると値をコピーするための "for"コレクションコンパレータの使用?その他の提案はありますか?
PS:最後のソートされたリストは、リストを保持し、HashMapなどではありません。アプリケーション全体がこのアーキテクチャを使用し、リストをアクティビティからアクティビティに移動します。そのため、値を更新するには「.set」が必要です(再び、私は指数を知らない)。私はのように格納しますユーザーの好みについては
HashMap<String, Category> map = HashMap<String, Category>();
for(Category c : response) { // assume response is List<Category>
map.put(c.getName(), c);
}
:ここ
は奇妙な長い質問カテゴリーのname
が一意であると仮定すると
オブジェクトに一意の識別子を付けることはできますか?次に、そのIDをキーとしてマップを作成し、それに応じて更新することができます。 –
レスポンスありがとう@SamBarnum ...まあ...名前は変わってはいけない、私は持っている、私が持っている、変更することができる...私は間違ってカテゴリとIDが削除されますもう一度追加すると、名前は同じになります。 –