首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView onRestoreInstanceState

ListView onRestoreInstanceState
EN

Stack Overflow用户
提问于 2014-03-13 11:54:51
回答 2查看 1K关注 0票数 0

我有一个ListView (VL)和HListView (HL)作为项目(书架风格)。我正在保存VL状态,它正在工作,但现在我想要的是保存它的items状态,因为我希望HLs在它们再次呈现时恢复它们的状态。

所以我在我的BookShelfBaseAdapter里做了这样的事情

代码语言:javascript
复制
private List<Book> bookList;
private Parcelable[] bookListStates;

@Override
public View getView(int position, View view, ViewGroup parent) {
    final int fPosition = position;
    ...

    holder.booksHListView.setOnScrollListener(new ContentListOnScrollListener(holder) {
       @Override
       public void onScrollStateChanged(AbsHListView view, int scrollState) {}

       @Override
       public void onScroll(AbsHListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
           bookListStates[fPosition] = holder.booksHListView.onSaveInstanceState();
       }
    });

    if (bookListStates[fPosition] != null) {
        holder.booksHListView.onRestoreInstanceState(bookListStates[fPosition]);
    }
    ...
}

当列表项再次呈现时,它们不再处于以前的状态.我在这里做错了什么?

耽误您时间,实在对不起。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-13 12:24:30

我发现了问题,我必须用“还原代码”切换“保存代码”,如下所示:

代码语言:javascript
复制
@Override
public View getView(int position, View view, ViewGroup parent) {
final int fPosition = position;
...

if (bookListStates[fPosition] != null) {
    holder.booksHListView.onRestoreInstanceState(bookListStates[fPosition]);
}

holder.booksHListView.setOnScrollListener(new ContentListOnScrollListener(holder) {
   @Override
   public void onScrollStateChanged(AbsHListView view, int scrollState) {}

   @Override
   public void onScroll(AbsHListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
       bookListStates[fPosition] = holder.booksHListView.onSaveInstanceState();
   }
});   
...

}

它现在起作用了:)

票数 0
EN

Stack Overflow用户

发布于 2014-03-13 12:26:30

代码语言:javascript
复制
if (bookListStates[fPosition] != null) {
    holder.booksHListView.onRestoreInstanceState(bookListStates[fPosition]);
}

holder.booksHListView.setOnScrollListener(new ContentListOnScrollListener(holder) {
   @Override
   public void onScrollStateChanged(AbsHListView view, int scrollState) {}

   @Override
   public void onScroll(AbsHListView view, int firstVisibleItem, int visibleItemCount, int      totalItemCount) {
       bookListStates[fPosition] = holder.booksHListView.onSaveInstanceState();
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22377837

复制
相关文章

相似问题

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