Android 如何在ListView中对项目进行排序?
我想对我的Android 如何在ListView中对项目进行排序?,android,listview,Android,Listview,我想对我的ListView进行排序,我如何才能做到这一点?`有什么方法可以完成这项工作吗 Java_代码: String [] mplNames = retrieveMPLNames(); List<String> sortedMPLNames = Arrays.asList(mplNames); Collections.sort(sortedMPLNames); mplNames = (String[]) sortedMPLNames
ListView
进行排序,我如何才能做到这一点?`有什么方法可以完成这项工作吗
Java_代码:
String [] mplNames = retrieveMPLNames();
List<String> sortedMPLNames = Arrays.asList(mplNames);
Collections.sort(sortedMPLNames);
mplNames = (String[]) sortedMPLNames.toArray();
mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.savedlocationlist_layout,
R.id.savedLocationName, mplNames);
mArrayAdapter.notifyDataSetChanged();
mListView.setAdapter(mArrayAdapter);
String[]mplNames=retrieveMPLNames();
List sortedMPLNames=Arrays.asList(mplNames);
集合。排序(分类名称);
mplNames=(字符串[])sortedMPLNames.toArray();
mArrayAdapter=newarrayadapter(getApplicationContext(),R.layout.savedlocationlist_布局,
R.id.savedLocationName,mplNames);
mArrayAdapter.notifyDataSetChanged();
mListView.setAdapter(mArrayAdapter);
对上述代码的评论
现在,列表的第一个元素是以“0”开头的项,最后一个元素是以“y”开头的项,但在这两个元素之间,依次在名为“a coffee”的项之前有一个名为“Me”的项,在已排序的列表中,这怎么会发生,或者我在上面的代码中做错了什么?对于任何
列表视图
排序,首先必须对传递给适配器的列表或数组进行排序,然后只需刷新列表,即适配器名称.datanotifyetchanged()
。尝试将列表转换为数组
String[] mplNames = sortedMPLNames.stream().toArray(String[]::new);
使用Collections.sort(您的列表名)代码>请查看更新的代码和注释,您能告诉我,在设置适配器之后或之前应该通知我吗?如果没有修复,请发布您的retrieveMPLNames()方法代码令人惊讶的是,在名为“咖啡”的项目之前有一个名为“我”的项目吗?!发布你的设备屏幕截图如果你使用hashmap,它有两个参数key和value,“Me”可能是你案例的键值对不起,你是什么意思?
mListView=(ListView)findViewById(R.id.listView1);
String [] mplNames = {"one","two","three","four","six","eight"};
List<String> sortedMPLNames = Arrays.asList(mplNames);
Collections.sort(sortedMPLNames);
mplNames = (String[]) sortedMPLNames.toArray();
ArrayAdapter mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.mylist,
R.id.list_content, mplNames);
mListView.setAdapter(mArrayAdapter);
itr1=list12.iterator();
while(itr.hasNext()&&itr1.hasNext())
{
mplnames.add(0, itr.next().toString());
mArrayAdapter.notifyDataSetChanged();
}