我有一个包含事件列表的ListView,当我滚动列表时,我加载了更多项目,并且始终无法在屏幕上看到20个以上的事件。所以我继续这样:
//load data from server and add it to my eventsList
int size = eventsList.size();
List<Data> temp;
if(size>20) {
eventsList = eventsList.subList(size - 20, size);
}
Log.e("eventsList Load More", " " + eventsList.size() + " " + principalSchedule.getCount());
//Tell to the adapter that changes have been made, this will cause the list to refresh
principalSchedule.notifyDataSetChanged();
但问题是我总是有eventsList.size()= 20并且principalSchedule.getCount()不会减少。
最佳答案
您的ListView应该通过ViewAdapter(可能是ArrayAdapter,但尚未显示该代码)与列表进行交互如果您创建自己的Adapter(不是很难做到),则该适配器上的getView()方法将能够确定何时不再可见某项,并可能回收资源。
此链接:http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/详细介绍了一种适配器技术,该技术可将资源加载到后台线程中,并在不再需要它们时释放资源。它与您的用例不完全匹配,但是如果您阅读并理解它,则应该了解如何编写针对您的用例的代码。