2016-08-30 145 views
0

在我的应用程序提升自定义适配器,我有与显示背景适配器 我想在ascendig的排序方式不同项目加载自定义项目列表的列表(使用距离值)适配器与元素这段代码。进入onCretaeView:Android的排序按距离

cardViewList = new ArrayList<>(); 
    View vw=inflater.inflate(R.layout.jsonparse_fragment, container, false); 
    lv=(ListView) vw.findViewById(R.id.listView1); 
    lv.setDivider(null); 
    lv.setDividerHeight(0); 

    final Double lat = gpsTracker.getLatitude(); 
    Double LatitudineUber = lat; 
    Double lon = gpsTracker.getLongitude(); 
    Double LongitudineUber = lon; 





    cardViewList.clear(); 

    if (flag_above35==1 && flag_below35==0 && flag_hybrid==0 && flag_position==0 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=1; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
    } 
    else if (flag_above35==0 && flag_below35==1 && flag_hybrid==0 && flag_position==0 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=2; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
    } 
    else if (flag_above35==1 && flag_below35==0 && flag_hybrid==1 && flag_position==0 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=3; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
    } 
    else if (flag_above35==0 && flag_below35==1 && flag_hybrid==1 && flag_position==0 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=4; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
    } 
    else if (flag_above35==0 && flag_below35==0 && flag_hybrid==1 && flag_position==0 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=5; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
    } 
    else if (flag_above35==0 && flag_below35==0 && flag_hybrid==0 && flag_position==0 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=0; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
     if (flag_uber==1) { 
      uber_flag=0; 
      new JSONAsynTask1(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_jcd==1) { 
      jcd_flag=0; 
      //new JSONAsynTask2().execute(); 
      new JSONAsynTask3().execute(); 
     } 
     if (flag_bitaksi==1) { 
      bitaksi_flag=0; 
      new JSONAsynTask4(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_lyft==1) { 
      lyft_flag = 0; 
      new JSONAsynTask5().execute(); 
     } 
    } 
    else if (flag_above35==0 && flag_below35==0 && flag_hybrid==0 && flag_position==1 && flag_tempo==0 && flag_conducente == 0) 
    { 
     car2go_flag=6; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
     if (flag_uber==1) { 
      uber_flag=1; 
      new JSONAsynTask1(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_jcd==1) { 
      jcd_flag=1; 
      //new JSONAsynTask2().execute(); 
      new JSONAsynTask3().execute(); 
     } 
     if (flag_bitaksi==1) { 
      bitaksi_flag=1; 
      new JSONAsynTask4(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_lyft==1) { 
      lyft_flag=1; 
      new JSONAsynTask5().execute(); 
     } 
    } 
    else if (flag_above35==0 && flag_below35==0 && flag_hybrid==0 && flag_position==0 && flag_tempo==1 && flag_conducente == 0) 
    { 
     car2go_flag=7; 
     new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
     if (flag_uber==1) { 
      uber_flag=2; 
      new JSONAsynTask1(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_bitaksi==1) { 
      bitaksi_flag=2; 
      new JSONAsynTask4(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_lyft==1) { 
      lyft_flag=2; 
      new JSONAsynTask5().execute(); 
     } 
    } 
    else if (flag_above35==0 && flag_below35==0 && flag_hybrid==0 && flag_position==0 && flag_tempo==0 && flag_conducente == 1) 
    { 
     //car2go_flag=8; 
     //new JSONAsynTask().execute("https://www.car2go.com/api/v2.1/vehicles?loc="+nome_citta+"&oauth_consumer_key=roadzapp&format=json"); 
     if (flag_uber==1) { 
      uber_flag=1; 
      new JSONAsynTask1(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_bitaksi==1) { 
      bitaksi_flag=1; 
      new JSONAsynTask4(getContext().getApplicationContext()).execute(); 
     } 
     if (flag_lyft==1) { 
      lyft_flag=1; 
      new JSONAsynTask5().execute(); 
     } 
    } 

    adapter = new CardViewAdapter(getActivity(), R.layout.new_item_list, cardViewList); 
    Collections.sort(cardViewList, new Comparator<CardView>() { 
     @Override 
     public int compare(CardView lhs, CardView rhs) { 
      Double d1 = Double.parseDouble(lhs.getDistance())/1000.0; 
      Double d2 = Double.parseDouble(rhs.getDistance())/1000.0; 
      if (d1 == d2) { 
       return 0; 
      } 
      if (d1 > d2) { 
       return 1; 
      } 
      return -1; 
     } 
    }); 


    lv.setAdapter(adapter); 

但排序不起作用。 我的代码错了? 有什么帮助吗?

+0

人你的代码是非常的混乱。没有冒犯性,只是一些建设性的批评。我敢肯定,你可以更好地做到这一点没有那么多如果,别人的和asynchtask创作。此外,您的问题基本上是第一个答案所说的:您需要等待数据运行排序。另外:不要在比较方法中解析,这是非常低效的。 – breakline

回答

0

您的cardviewlist正在被AsyncTask填充,因此Collections.sort的调用发生在列表填充之前,因此还没有任何排序。之后,随着AsyncTasks填充列表,它们不会被排序。