首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新安卓系统中的ArrayAdapter

更新安卓系统中的ArrayAdapter
EN

Stack Overflow用户
提问于 2010-12-07 04:24:06
回答 1查看 5.6K关注 0票数 2

如何在不丢失滚动位置的情况下更新ArrayAdapter

这就是我目前所做的。我在ArrayAdapter子类中创建了一个update方法,它执行以下操作:

代码语言:javascript
运行
复制
public void update(List<MyEntity> entities) {
    for (MyEntity entity : entities) {
        int position = this.getPosition(entity);
        if (position >= 0) {
            final MyEntity outdateEntity = this.getItem(position);
            this.insert(entity, position);
            this.remove(outdateEntity);
        } else {
            this.insert(entity, 0);         
        }
    }
}

public int getPosition(MyEntity updatedEntity) {
    for (int i = 0; i < this.getCount(); i++) {
        if (this.getItem(i).getId() == updatedEntity.getId()) {
            return i;
        }
    }
    return -1;
}

然而,这似乎非常低效且容易出错。有没有更好的方法?

EN

回答 1

Stack Overflow用户

发布于 2010-12-07 05:06:48

为什么不首先扩展BaseAdapter呢?您只需在内部更新列表,然后调用notifyDataSetChanged()... :-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4370612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档