展开式清单检视顺序不正确 [英] Expandable List View not in right order

查看:69
本文介绍了展开式清单检视顺序不正确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的可扩展列表视图似乎顺序不正确.

my expandable list view doesn't seem to be in right order.

这是我的数据提供者:

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 ...为什么有任何想法?谢谢!

As you can see it should be 29,30,31,32,37.. but in reality it is 29,30,32,37,31... Any ideas why? Thanks!

推荐答案

这很可能是因为HashMap无法保证返回键集中其键的顺序.我的猜测是,如果您随后对在此处构建的列表进行排序,则会得到所需的排序:

This is most likely because HashMap provides no guarantees about the ordering of its keys in the returned keyset. My guess is that if you subsequently sort the list that you build here, you would get your desired ordering:

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

这篇关于展开式清单检视顺序不正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆