gpt4 book ai didi

android - 如何防止 ListView 在大小改变时重新加载?

转载 作者:搜寻专家 更新时间:2023-11-01 09:28:35 25 4
gpt4 key购买 nike

我有一个 Activity ,它有一个工具栏和一个 FrameLayout。 FrameLayout 是 fragment 的占位符。在我的一个 fragment 中,有我的主屏幕 ListView。

目前,当用户在此 ListView 中向下滚动时,我会隐藏工具栏。当用户向上滚动时,我再次显示工具栏。

到目前为止,代码看起来像这样:

listView.setOnScrollListener(new OnScrollObserver(){
@Override
public void onScrollUp() {
toolbar.setVisibility(View.GONE);
}

@Override
public void onScrollDown() {
toolbar.setVisibility(View.VISIBLE);
}

});

这是 OnScrollObserver:

public abstract class OnScrollObserver implements AbsListView.OnScrollListener {

public abstract void onScrollUp();

public abstract void onScrollDown();

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}

int last = 0;
boolean control = true;

@Override
public void onScroll(AbsListView view, int current, int visibles, int total) {
if (current < last && !control) {
onScrollUp();
control = true;
} else if (current > last && control) {
onScrollDown();
control = false;
}

last = current;
}
}

到目前为止它可以工作,但是有一个问题。隐藏工具栏时,ListView 会占据整个屏幕,这是预期的行为。但问题是发生这种情况时,ListView 由于大小变化而重新加载(我假设)。一切都被重新绘制和重新计算,这会降低性能。

有什么替代方案吗?如何防止每次隐藏或显示工具栏时都重新加载?

最佳答案

你必须使用下面的代码而不是你的:

listView.setOnScrollListener(new OnScrollObserver(){
@Override
public void onScrollUp() {
toolbar.setVisibility(View.INVISIBLE);
}

@Override
public void onScrollDown() {
toolbar.setVisibility(View.VISIBLE);
}

});

关于android - 如何防止 ListView 在大小改变时重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com