2017-05-20 3 views
0
public class ListFragmentDomesticPrice extends ListFragment { 

    public static final String PREFS_NAME = "hotelsearch"; 
    public static final String PREF_NAME = "hotelfilter"; 
    private View V; 
    private ProgressDialog pDialog = null; 
    public ListFragmentDomesticPrice() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     pDialog = new ProgressDialog(getActivity()); 
     // Showing progress dialog before making http request 
     pDialog.setMessage("Loading ..."); 
     V = new View(getActivity()); 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 



     final List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 
     List<RoomGuest> roomGuests = new ArrayList<RoomGuest>(); 
     final ImageLoaderAdapter adapter = new ImageLoaderAdapter(aList); 
     setListAdapter(adapter); 

     String url = "http://somesite.com/app_hotelresult"; 
     final SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, 0); 

     Map<String, Object> params = new HashMap(); 
     // params.put("DepartureDate", "2017-05-02"); 
     params.put("Destination", "Delhi");//settings.getString("Destination", "").toString().trim()); 
     params.put("CheckInDate", "2017-06-12");//settings.getString("CheckInDate", "").toString()); 
     params.put("CheckOutDate", "2017-06-15");//settings.getString("CheckOutDate", "").toString()); 
     params.put("CountryCode", "IN");//settings.getString("CountryCode", "").toString()); 
     params.put("HotelName", "");//settings.getString("HotelName", "").toString()); 
     params.put("NoOfRooms", "1");//settings.getString("NoOfRooms", "").toString()); 

     RoomGuest roomGuest = new RoomGuest(); 
     List<Integer> childAge = new ArrayList<Integer>(); 
     childAge.add(Integer.parseInt(settings.getString("ChildAge1","").toString())); 

     roomGuest.setNoOfChild(settings.getString("NoOfChild","").toString()); 
     roomGuest.setNoOfAdults(settings.getString("NoOfAdults","").toString()); 
     roomGuest.setChildAge(childAge); 

     roomGuests.add(roomGuest); 

     Gson gson = new Gson(); 
     Type type = new TypeToken<List<RoomGuest>>() {}.getType(); 
     String json = gson.toJson(roomGuests, type); 

     Log.d("json",json); 

     try { 
      params.put("RoomGuests", new JSONArray(json)); 
     } 
     catch (JSONException e){ 

     } 
     JSONObject parameters = null; 
     try { 
      parameters = new JSONObject(params); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     pDialog.show(); 

     JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, parameters, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       Log.d("Response ", response.toString()); 
       pDialog.dismiss(); 
       // Toast.makeText(getActivity(), response.toString(), Toast.LENGTH_LONG).show(); 
       try { 
        response = new JSONObject(response.toString()); 
        JSONObject hotel = new JSONObject(response.getString("HotelSearchResult")); 
        JSONArray datas = hotel.getJSONArray("HotelResults"); 

        if(datas.length() > 0) { 

         for (int i = 0; i < datas.length(); i++) { 

          JSONObject data = null; 
          data = datas.getJSONObject(i); 
          Log.d("Create Response", data.getString("HotelName")); 

          HashMap<String, String> hm = new HashMap<String, String>(); 
          hm.put("traceId",hotel.getString("TraceId")); 
          hm.put("resultIndex",data.getString("ResultIndex")); 
          hm.put("HotelName", data.getString("HotelName")); 
          hm.put("HotelPicture", data.getString("HotelPicture")); 
          if(!data.getString("HotelLocation").equals(null) && !data.getString("HotelLocation").equals("null")) 
           hm.put("HotelLocation", data.getString("HotelLocation")); 
          else 
           hm.put("HotelLocation", ""); 
          hm.put("HotelStar", data.getString("StarRating")); 

          JSONObject price = data.getJSONObject("Price"); 
          hm.put("HotelPrice",settings.getString("Currency", "").toString()+" " +price.getString("OfferedPriceRoundedOff")); 
          aList.add(hm); 
          adapter.notifyDataSetChanged(); 
         } 


        } 
        else{ 

         Toast.makeText(getActivity(), "No results found!", Toast.LENGTH_LONG).show(); 
        } 
       } catch (Exception e) { 
        Toast.makeText(getActivity(), "No results found!", Toast.LENGTH_LONG).show(); 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d("Error : ", error.toString()); 
       pDialog.dismiss(); 
       //Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
      } 
     }); 

     MyApplication.getInstance().addToRequestQueue(request); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

} 

価格と名前に基づいてリストビューをソートしたいと思います。ホテルの価格とホテル名のための別の列があります。私はcollections.reverseを使用してリストを逆転しました。リスト断片をアンドロイドでソートする方法は?

Collections.reverse(aList); 
adapter.notifyDataSetChanged(); 

コンパレータを使ってソートすることはできますか?

+0

興味深い。 ListFragmentsを使用している世界にはまだ誰かがいます... –

+0

http://stackoverflow.com/questions/17806181/advantage-of-listfragment-over-a-listview-or-normal-fragment – Sudhakar100

+2

あなたは、 ? ListFragmentやListActivitiesを使うことは全くありません。そしてあなたには多くの制限があります。一方、ListViewはシンプルでシンプルであり、より多くの自由を提供します。 –

答えて

0

ListFragmentは、ListViewのようにいつものようにソートできます。

    Collections.sort(aList, new Comparator<Map<String, String>>() { 

         final static String COMPARE_KEY = "HotelName"; 

         @Override 
         public int compare(Map<String, String> lhs, Map<String, String> rhs) { 
          String v1 = lhs.get(COMPARE_KEY); 
          String v2 = rhs.get(COMPARE_KEY); 
          return v1.compareTo(v2); 
         } 
        }); 
        adapter.notifyDataSetChanged(); 
関連する問題