java-排序我的ArrayAdapter不会更改我的数据源
作者:互联网
我有一个奇怪的问题.我有一个正在排序的ArrayAdapter.这将正确显示在屏幕上,但是当我检查实际数据源时,内容尚未排序.如何确保对ListAdapter进行排序也可以对数据源进行排序?
Collections.sort(quotes, new PercentChangeComparator()); //sort my data source (this isn't necessary)
quotesAdapter.sort(new PercentChangeComparator()); //sort my ListAdapter
Toast toast = Toast.makeText(getApplicationContext(),quotes.get(0).getSymbol(), Toast.LENGTH_SHORT);
toast.show(); //this shows that my data source hasn't been updated, even though my ListAdapter presents my ListView in the correctly sorted order.
例如:
如果我的数据源是[10,9,1,20]
排序后,我的ListView将显示[1,9,10,20]
但数据源仍为[10,9,1,20]
我该如何解决?
解决方法:
这是另一回事:对数据源进行排序将对ArrayAdapter进行排序.
我认为您之前已经做过类似的事情.
ArrayList<PercentChangeComparator> quotes = getQuotesFromSomewhere();
QuotesAdapter quotesAdapter = new QuotesAdapter(this, R.layout.xxx, quotes);
然后,如果您对引号进行了排序,则通知适配器dataSet已更改,则应对列表进行排序
Collections.sort(quotes, new PercentChangeComparator());
quotesAdapter.notifyDataSetChanged();
这对我有用,希望对您有所帮助.
重要的一件事:如果您重新创建源数组(在此特定示例中为引号),则适配器将不会读取进一步的更改.因此,如果您需要修改ListView的内容,请执行以下操作:
quotes.clear();
quotes.add(...);
quotes.add(...);
另外,请确保正确实现了比较器.如果执行此
Collections.sort(quotes, new PercentChangeComparator());
并且引号未排序,那么问题与适配器无关,而与比较无关.
标签:android-arrayadapter,java,android,sorting 来源: https://codeday.me/bug/20191105/1997919.html