2017-05-20 13 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

당신은 해답을 읽었습니까? ? 그것은 간단합니다. 왜냐하면 ListView는 ListFragments 나 ListActivities를 전혀 사용하지 않기 때문입니다. 그리고 당신에게는 많은 한계가 있습니다. 반면에, ListView는 간단하고 많은 자유를 제공합니다. –

답변

0

우리는 ListView에 대한 일반적인 방법대로 ListFragment를 정렬 할 수 있습니다.

    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();