gpt4 book ai didi

java - ListView 未返回精确的滚动位置

转载 作者:行者123 更新时间:2023-12-01 06:06:25 25 4
gpt4 key购买 nike

当我从其他地方返回时,我试图让我的 ListFragment 返回到完全相同的位置,但它不起作用。我的代码中 listView 的所有实例都变成红色,并返回以下错误:

Cannot resolve symbol 'listView'

我真的不知道为什么当我使用ListView listView = getListView();时会发生这种情况。我什至尝试遵循这些页面中的解决方案:

  1. FutureStudio.io - How to Save and Restore the Scroll Position and State of a Android ListView
  2. Stack Overflow - Eugene Mymrin's answer - Maintain/Save/Restore scroll position when returning to a ListView

我发现遵循人们的建议非常令人困惑,因为他们确实各不相同。

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/fragmentherbs">

<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>

</LinearLayout>

Java

public class FragmentHerbs extends ListFragment {

public FragmentHerbs() {
// Required empty constructor
}

public static FragmentHerbs newInstance() {
return new FragmentHerbs();
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_herbs, container, false);

ListView listView = getListView();

initialize();
return view;
}

List<Herb> list = new ArrayList<>();
private void initialize() {
String[] items = getActivity().getResources().getStringArray(R.array.herb_names);
for (int n = 0; n < items.length; n++){
Herb herb = new Herb();
herb.setID();
herb.setName(items[n]);
list.add(herb);
}

HerbsListAdapter mAdapter = new HerbsListAdapter(list, getActivity());
setListAdapter(mAdapter);
}


@Override
public void onPause() {
// Save ListView state @ onPause
Log.d(TAG, "saving listview state @ onPause");
state = listView.onSaveInstanceState();
super.onPause();
}

@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

// Restore previous state (including selected item index and scroll position)
if(state != null) {
Log.d(TAG, "trying to restore listview state..");
listView.onRestoreInstanceState(state);
}
}
}

最佳答案

public class FragmentHerbs extends ListFragment {
ListView listView;

public FragmentHerbs() {
// Required empty constructor
}

public static FragmentHerbs newInstance() {
return new FragmentHerbs();
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_herbs, container, false);

listView = getListView();
initialize();
return view;
}

List<Herb> list = new ArrayList<>();
private void initialize() {
String[] items = getActivity().getResources().getStringArray(R.array.herb_names);
for (int n = 0; n < items.length; n++){
Herb herb = new Herb();
herb.setID();
herb.setName(items[n]);
list.add(herb);
}

HerbsListAdapter mAdapter = new HerbsListAdapter(list, getActivity());
setListAdapter(mAdapter);
}


@Override
public void onPause() {
// Save ListView state @ onPause
Log.d(TAG, "saving listview state @ onPause");
state = listView.onSaveInstanceState();
super.onPause();
}

@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

// Restore previous state (including selected item index and scroll position)
if(state != null) {
Log.d(TAG, "trying to restore listview state..");
listView.onRestoreInstanceState(state);
}
}

}

关于java - ListView 未返回精确的滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43642782/

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