如何删除此更新图标? Android Swiperefersh

时间:2016-10-14 11:09:01

标签: android swiperefreshlayout

CODE

public class YellowFragment extends Fragment implements FlowerAdapter.FlowerClickListener{


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

        View view = inflater.inflate(R.layout.fragment_yellow, container, false);

        swipeContainer_yellow = (SwipeRefreshLayout) view.findViewById(R.id.swipeContainer_yellow);

        setRetainInstance(true);

        mReferSharedPreference = new ReferSharedPreference(getContext());
        mlat = mReferSharedPreference.getValue("Lat", "None");
        mlon = mReferSharedPreference.getValue("Lon", "None");

        mCoordinatesTextLinear = (TextView) view.findViewById(R.id.tv_coordinates_linear);

        if(!mlat.equals("None")){
            getLinearPosts();
        }
        else {
            Toast.makeText(getContext(), "Choose your location", Toast.LENGTH_LONG).show();
        }

        swipeContainer_yellow.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                if(!mlat.equals("None")){
                    getLinearPosts();
                }
                else {
                    Toast.makeText(getContext(), "Choose your location", Toast.LENGTH_LONG).show();
                }
            }
        });
        configViews(view);
        return view;
    }

    private void getLinearPosts() {
        ReferSharedPreference preferenceCoordinates = new ReferSharedPreference(getContext());
        String lat = preferenceCoordinates.getValue("Lat", "None");
        String lon = preferenceCoordinates.getValue("Lon", "None");
        mCoordinatesTextLinear.setText("Your Location :" + lat + "  , " + lon);

        mRestManager = new RestManager();
        Call<List<Flower>> listCall = mRestManager.getmFlowerApiService(getActivity()).getAllFlowers(lat, lon);
        listCall.enqueue(new Callback<List<Flower>>() {
            @Override
            public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) {

                if (response.isSuccessful()) {
                    mFlowerAdapter.clear();

                    List<Flower> flowerList = response.body();
                    for(int i =0; i<flowerList.size(); i++) {
                        Flower flower = flowerList.get(i);
                        mFlowerAdapter.addFlower(flower);
                    }
                    swipeContainer_yellow.setRefreshing(false);
                }
            }
            @Override
            public void onFailure(Call<List<Flower>> call, Throwable t) {
            }
        });
    }

在此代码中,当我滑动时,如果mlat为None,则会有滑动更新图标,并且它不会消失。

我想要的是,如果mlat有一些价值,请getLinearPosts();,但如果mlat有None,请显示Toast“选择您的位置”。

但是参考图标不会消失

像这样

enter image description here

问题:当mlat为None时,如何消除此更新或刷新图标?

1 个答案:

答案 0 :(得分:2)

完成任务后,只需致电swipeContainer_yellow.setRefreshing(false),它就会隐藏该进度条

我可以看到你已经使用过它,但问题是你假设你的反应会一直很完美。因此,不要将其保留在if (response.isSuccessful())内,而是将其保留在条件之外,并将其放在onFailure()

listCall.enqueue(new Callback<List<Flower>>() {
    @Override
    public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) {
        swipeContainer_yellow.setRefreshing(false);
        if (response.isSuccessful()) {
            mFlowerAdapter.clear();

            List<Flower> flowerList = response.body();
            for(int i =0; i<flowerList.size(); i++) {
                Flower flower = flowerList.get(i);
                mFlowerAdapter.addFlower(flower);
            }

        }
    }
    @Override
    public void onFailure(Call<List<Flower>> call, Throwable t) {
        swipeContainer_yellow.setRefreshing(false);
    }
});