Android的排序列表视图按字母顺序 [英] Android sort listview alphabetically
本文介绍了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屋!
查看全文