2016-08-09 2 views
1

확장형 목록보기가 올바른 순서로 보이지 않습니다.확장형 목록보기가 올바르지 않음

은 여기 내의 dataProvider입니다 :가 생성된다

다음
public class DataProvider { 

public static HashMap<String, List<String>> getInfo() { 

    HashMap<String, List<String>> WorkoutDetails = new HashMap<String, List<String>>(); 

    List<String> Workout_29 = new ArrayList<String>(); 
    Workout_29.add("Week One"); 
    Workout_29.add("Week Two"); 
    Workout_29.add("Week Three"); 
    Workout_29.add("Week Four"); 

    List<String> Workout_30 = new ArrayList<String>(); 
    Workout_30.add("Week One"); 
    Workout_30.add("Week Two"); 
    Workout_30.add("Week Three"); 
    Workout_30.add("Week Four"); 

    List<String> Workout_31 = new ArrayList<String>(); 
    Workout_31.add("Week One"); 
    Workout_31.add("Week Two"); 
    Workout_31.add("Week Three"); 
    Workout_31.add("Week Four"); 

    List<String> Workout_32 = new ArrayList<String>(); 
    Workout_32.add("Week One"); 
    Workout_32.add("Week Two"); 
    Workout_32.add("Week Three"); 
    Workout_32.add("Week Four"); 

    List<String> Workout_37 = new ArrayList<String>(); 
    Workout_37.add("Week One"); 
    Workout_37.add("Week Two"); 
    Workout_37.add("Week Three"); 
    Workout_37.add("Week Four"); 

    WorkoutDetails.put("Workout 29", Workout_29); 
    WorkoutDetails.put("Workout 30", Workout_30); 
    WorkoutDetails.put("Workout 31", Workout_31); 
    WorkoutDetails.put("Workout 32", Workout_32); 
    WorkoutDetails.put("Workout 37", Workout_37); 

    return WorkoutDetails; 
} 

} 

은 다음과 같습니다

public class MyWorkout extends BaseActivity{ 

ExpandableListView expandableListView; 
HashMap<String, List<String>> Workouts_details; 
List<String> Workout_list; 
WorkoutsAdapter mAdapter; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_workout); 
    mToolBar = activateToolbar(); 
    setUpNavigationDrawer(); 
    getSupportActionBar().setTitle("My Workout"); 


    expandableListView = (ExpandableListView) findViewById(R.id.listViewWorkouts); 
    Workouts_details = DataProvider.getInfo(); 
    Workout_list = new ArrayList<>(Workouts_details.keySet()); 
    mAdapter = new WorkoutsAdapter(this, Workouts_details, Workout_list); 



    expandableListView.setAdapter(mAdapter); 

당신이 29,30,31,32,37을해야 볼 수 있듯이 .. 하지만 실제로 그것은 29,30,32,37,31 ... 어떤 아이디어? 감사!

답변

1

HashMap은 반환 된 키 집합에서 해당 키의 순서에 대해 보장하지 않기 때문에 가능성이 높습니다. 내 생각 엔 이후에 작성한 목록을 정렬하면 원하는 주문을 받게됩니다.

Workout_list = new ArrayList<>(Workouts_details.keySet()); 
    // Now sort Workout_list... 
    // As it is simply a list of strings, we can sort it according to its natural ordering (lexicographical) to get your desired result like so: 
    java.util.Collections.sort(Workout_list); 
+0

감사합니다. 어떻게 Workout_list를 정렬 할 수 있습니까? – LBJ33

+0

@ LBJ33 나는 자연 순서 (lexicographical)에 따라 목록의 정렬을 포함하도록 답변을 업데이트했다. 지금 작동합니까? –

+1

그게 효과가! 고맙습니다! – LBJ33