2016-07-21 20 views
1

私は基本的に、ユーザーの近くにある様々な食品店を表示するアプリケーションを作成しています。特定のリストビュー項目に従ってリストビューを並べ替える方法

正常にGoogleマップを統合しましたが、最近のユーザーの場所に応じてリストビューアイテムをフィルタリングできません。例えば

私は

場所

とその値が

place1、place2、place3、place4となるようになっリストビュー項目を持っています

と私は、ユーザーの場所が近くに ' Place 1 'と表示されます。

したがって、特定のリストビュー項目(PLACE)に従ってリストビューをソートし、それをユーザーの場所と比較したいユーザーに近い結果を表示することができます。

私はこれを行うことを考えていません。 ありがとうございました。

+0

を参照してください。より良いヘルプのために、アダプタとバッキングデータセットに関する詳細情報を提供してください。 –

答えて

0

2次元のArrayListにすべてのデータを格納すると、列の1つが「場所」になることがあります。次に、以下のコードを使用してソートし、アダプタに渡します。

ArrayList<ArrayList<String>> yourData = new ArrayList<ArrayList<String>>(); 
yourData = /* initialize your data */ ; 

Collections.sort(yourData, new Comparator<ArrayList<String>>() { 
    @Override 
    public int compare(ArrayList<String> row1, ArrayList<String> row2) { 
     return row1.get(0).compareTo(row2.get(0)); // "at 0 index your place 
    } 
}); 

UPDATE:

は、各レストランの列 "場所" の経度及びlattitude値を格納することができます。その後、ユーザーの現在地を取得すると、ユーザーとレストランの間の距離を計算する方法を起動することができます。方法は次のようになります。

float [] distResult = new float[1]; 
Location.distanceBetween(latA, lonA, latB, lonB, distResult); 
float dist = distResult[0]; 

これらの計算値は別々の列に格納します。すべての計算が完了したら、ユーザーの現在地とレストランとの距離を含む列に基づいて項目を並べ替えるソート方法を呼び出すことができます。距離の計算の詳細については

あなたは、リストをソートする `Comparator`を使用する必要がthis

+0

私はこの二次元配列を得ていません。リストビュー項目(PLACE)とユーザーの場所を比較して、彼の周りのさまざまな店舗を表示できますか? –

+0

これはオプションの1つです。あなたの質問は、データがどのように格納されているかを説明していません。異なる場合には、ソートリストにはさまざまなアプローチがあります。なぜ2次元?私はあなたがそれをこのようにすることができると仮定します:最初の列はPlaceであり、残りのcoulmnsは食品です。または他の構造。もちろん、別の方法でコードを使用することができます。 – Marat

+0

@himanshudaswaniすでに作成されているリストビューアイテムを並べ替えることができるかどうかはわかりません。私はそれが可能ではないと思う。すでにソートされたデータをアダプタに渡す方が簡単です。データが必要に応じてlistviewに表示されます。それはあなたがそれを整理する前にそれをソートする必要がある理由です。 – Marat

0

アダプタでアイテムを取り出して並べ替えます。おそらく、標準のArrayAdapterを拡張する必要があります。ソート後にAdapter.notifyDataSetChanged()を呼び出すことを忘れないでください。

関連する問題