从listView android中删除项目

时间:2013-08-16 13:30:49

标签: java android listview

我有一个包含事件列表的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();

但问题是我总是有eventList.size()= 20和principalSchedule.getCount()不会减少。

2 个答案:

答案 0 :(得分:1)

List&lt; E&gt; #subList(int,int)方法返回一个新的List&lt; E&gt;使用初始List的子集,不会更改原始List。

如果您没有将eventList设置回principalSchedule,则来自prin的列表

答案 1 :(得分:0)

您的ListView应该通过ViewAdapter与您的列表进行交互(可能是一个ArrayAdapter,但您没有显示该代码)如果您创建自己的Adapter(不是很难做),那么该适配器上的getView()方法将能够确定项目何时不再可见并可能回收资源。

此链接:http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/详细介绍了一种适配器的技术,该适配器在后台线程中加载资源,并且可以在不再需要资源时释放资源。它与您的用例不完全匹配,但如果您阅读并理解它,您应该看到如何编写您的案例所需的代码。