Android的排序列表视图按字母顺序 [英] Android sort listview alphabetically

查看:283
本文介绍了Android的排序列表视图按字母顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我想对简单arrayadapter列表视图。下面是我尝试过:

 的ListView LV;
的String []月= {
        一月,
        二月,
        游行,
        四月,
        可能,
        六月,
        七月,
        八月,
        九月,
        十月,
        十一月,
        十二月
};

ArrayAdapter<字符串>适配器;
ArrayList的<字符串>清单;

@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);

    LV =(ListView控件)findViewById(R.id.listView1);
    lv.setFastScrollEnabled(真正的);
    适配器=新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_list_item_1,月);
    lv.setAdapter(适配器);

}

@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
    //充气菜单;这增加了项目操作栏,如果它是present。
    。getMenuInflater()膨胀(R.menu.main,菜单);
    返回true;
}

@覆盖
公共布尔onOptionsItemSelected(菜单项项){
    // TODO自动生成方法存根

    开关(item.getItemId()){
    案例R.id.sortasc:
        名单=新的ArrayList<字符串>(Arrays.asList(月));
        Collections.sort(名单);
        的for(int i = 0; I<则为list.size();我++){
            的System.out.println(list.get(一));
        }
        adapter.clear();
        适配器=新的ArrayAdapter<字符串>(这一点,
                android.R.layout.simple_list_item_1,清单);
        adapter.notifyDataSetChanged();
        返回true;
    案例R.id.sortdesc:

        返回true;
    默认:
        返回super.onOptionsItemSelected(项目);
    }
}
 

但我发现了UnsupportedOperationException异常,有什么错呢?我真的需要帮助。在此先感谢!

解决方案

您没叫setAdapter(适配器),整理您的物品后。

使用象下面这样

 适配器=新的ArrayAdapter<字符串>(这一点,
                android.R.layout.simple_list_item_1,清单);
lv.setAdapter(适配器);
adapter.notifyDataSetChanged();
 

而不是

  adapter.clear(); // 无用
适配器=新的ArrayAdapter<字符串>(这一点,
                android.R.layout.simple_list_item_1,清单);
adapter.notifyDataSetChanged();
 

So I'm trying to sort a simple arrayadapter listview. Here's what I've tried:

    ListView lv;
String[] months = {
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
};

ArrayAdapter<String> adapter;
ArrayList<String> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    lv = (ListView)findViewById (R.id.listView1);
    lv.setFastScrollEnabled(true);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, months);
    lv.setAdapter(adapter);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub

    switch (item.getItemId()) {
    case R.id.sortasc:
        list = new ArrayList<String>(Arrays.asList(months));
        Collections.sort(list);
        for(int i=0; i < list.size(); i++){
            System.out.println(list.get(i));
        }
        adapter.clear();
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);
        adapter.notifyDataSetChanged();
        return true;
    case R.id.sortdesc:

        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

But I'm getting UnsupportedOperationException, what's wrong with this? I really need help. Thanks in advance!

解决方案

You didn't called setAdapter(adapter), after sorting your items.

Use like below

adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();

instead of

adapter.clear(); // Useless 
adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);
adapter.notifyDataSetChanged();

这篇关于Android的排序列表视图按字母顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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