2016-04-26 5 views
1

はちょうどそれが持っているのは、(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が一意であると仮定すると

+0

オブジェクトに一意の識別子を付けることはできますか?次に、そのIDをキーとしてマップを作成し、それに応じて更新することができます。 –

+0

レスポンスありがとう@SamBarnum ...まあ...名前は変わってはいけない、私は持っている、私が持っている、変更することができる...私は間違ってカテゴリとIDが削除されますもう一度追加すると、名前は同じになります。 –

答えて

0

ためのポテトですが、私はHashMapのような情報を格納しますList<String> userPreference;には、ユーザーの順序でカテゴリの名前が含まれています。あなたのList<Category> categories;することができますを構築するには:

List<Category> categories = new ArrayList<>(); 
for(String name : userPreference) { 
    categories.add(map.get(name)); 
} 

その後、適切な分別とcategoriesオブジェクトを持つことになります。

+0

応答ありがとう:)ストレージのリストは、 "Name = NameOfCategory、重要度= IntOfImportance"、Origina/Finalリストは4,5キーのようになり、一致キーは2、 "Name"、 "Importance"比較する名前と重要度を更新する重要度。名前は一致する必要があり、重要度のみを新しいIntで更新する必要があります。 –

+0

重要度はカテゴリの順序を表しているため、重要度の値を反映するようにuserPreferenceリストのカテゴリ名の順序を調整できます。 – AgileNinja

関連する問題