gpt4 book ai didi

android - 为什么我的 Android SwipeRefreshLayout 不刷新?

转载 作者:行者123 更新时间:2023-11-30 01:34:09 27 4
gpt4 key购买 nike

我找到了很多关于实现 Android 的 SwipeRefreshLayout 的文章 this being the one I followed ,他们都说这很简单,但我似乎无法让我的工作。我做错了什么?

package myPackage;

public class MyClass extends Fragment {

private View rootView;
private DatabaseHelper myDBHelper;
private Cursor dataCursor;
private SimpleCursorAdapter mySimpleCursorAdapter;

private ListView rowOfDataListView;
private SwipeRefreshLayout mySwipeRefreshLayout;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

rootView = inflater.inflate(R.layout.my_awesome_layout, container, false);
rowOfDataListView = (ListView) rootView.findViewById(R.id.row_of_data);
mySwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swipe_refresh_container);

return rootView;
}

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

if(getArguments() != null) {
idNumber = getArguments().getString("id");
}

myDBHelper = new DatabaseHelper(getActivity());

dataCursor = myDBHelper.getDataCursor(idNumber);

String[] fromColumns = {"column1", "column2", "column3", "column4", "column5", "column6"};
int[] toViews = {R.id.column1_textview, R.id.column2_textview, R.id.column3_textview, R.id.column4_textview, R.id.column5_textview, R.id.column6_textview};

mySimpleCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.row_of_data_layout, dataCursor, fromColumns, toViews, 0);

rowOfDataListView.setAdapter(mySimpleCursorAdapter);

myDBHelper.close();

mySwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mySwipeRefreshLayout.setRefreshing(false);
}
});
}
}

我的数据本来显示正确,但是刷新不刷新

最佳答案

我没有看到您在刷新时更新数据的位置。我认为您应该将构建 View 的代码分离到一个新方法中,在您的 onViewCreated 方法中调用它,然后在 onRefresh 中再次调用它。否则,onRefresh 会被触发,但它不会“做”任何事情。

package myPackage;

public class MyClass extends Fragment {

private View rootView;
private DatabaseHelper myDBHelper;
private Cursor dataCursor;
private SimpleCursorAdapter mySimpleCursorAdapter;

private ListView rowOfDataListView;
private SwipeRefreshLayout mySwipeRefreshLayout;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

rootView = inflater.inflate(R.layout.my_awesome_layout, container, false);
rowOfDataListView = (ListView) rootView.findViewById(R.id.row_of_data);
mySwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swipe_refresh_container);

return rootView;
}

@Override
public void onViewCreated(View rootView, Bundle savedInstanceState){
super.onViewCreated(rootView, savedInstanceState);
methodToBuildTheData();

mySwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mySwipeRefreshLayout.setRefreshing(false);
methodToBuildTheData();
}
});
}

private void methodToBuildTheData() {
if(getArguments() != null) {
idNumber = getArguments().getString("id");
}

myDBHelper = new DatabaseHelper(getActivity());

dataCursor = myDBHelper.getDataCursor(idNumber);

String[] fromColumns = {"column1", "column2", "column3", "column4", "column5", "column6"};
int[] toViews = {R.id.column1_textview, R.id.column2_textview, R.id.column3_textview, R.id.column4_textview, R.id.column5_textview, R.id.column6_textview};

mySimpleCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.row_of_data_layout, dataCursor, fromColumns, toViews, 0);

rowOfDataListView.setAdapter(mySimpleCursorAdapter);

myDBHelper.close();
}

}

关于android - 为什么我的 Android SwipeRefreshLayout 不刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325389/

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