Giter Site home page Giter Site logo

loader2's Introduction

介绍

Loader是一个方便Activity控制加载状态,加载缓存的工具类

下载

compile 'com.github.linxin6560:loader-base:1.3.0'

调用前的工作

1.修改BaseActivity使之实现INetWorkView:

public class BaseActivity extends AppCompatActivity implements ILoaderView {

    private DataLoader mLoader;

    @Override
    protected void onDestroy() {
        super.onDestroy();
        destroyLoader();
    }

    @Override
    public void destroyLoader() {
        if (mLoader != null) {
            mLoader.onDestroy();
        }
    }

    @Override
    public void setDataLoader(DataLoader loader) {
        mLoader = loader;
    }
}

2.根据产品UI,实现ILoadStateHelper,IRefreshViewHelper,IListViewHelper 3.编写Model:

public class SingleDataModel extends Model<String> {

    private String response;

    @Override
    public boolean isEmpty() {
        return TextUtils.isEmpty(response);
    }

    @Override
    public void setData(boolean isRefreshing, String response) {
        this.response = response;
    }

    @Override
    public void load(final OnLoadListener<String> listener) {
        listener.onStart();
        MainApi api = ApiManager.getInstance().getMainApi();
        Call call = api.getTestCall();
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                listener.onError(e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                listener.onSuccess(response.body());
            }
        });
    }
}

或者

public class ListDataModel extends ListModel<String, String> {

    public ListDataModel(List<String> list) {
        super(list);
    }

    @Override
    protected boolean ensureHasNext(String response, List<String> mapList) {
        return page < 10;
    }

    @Override
    protected List<String> map(String response) {
        List<String> list = new ArrayList<>();
        int size = mList.size();
        for (int i = 0; i < 20; i++) {
            list.add((i + size) + ":XXXXXXXXXXXXXXXXXXXXXXXXXX");
        }
        return list;
    }

    @Override
    public void load(final OnLoadListener<List<String>> listener) {
        listener.onStart();
        MainApi api = ApiManager.getInstance().getMainApi();
        Call call = api.getTestCall();
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                listener.onError(e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                listener.onSuccess(response.body());
            }
        });
    }
}

4.调用:

public class SingleDataActivity extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_single_data);
        SwipeRefreshLayout layout = (SwipeRefreshLayout) findViewById(R.id.act_single_data_sfl);
        final TextView textView = (TextView) findViewById(R.id.act_single_data_tv);
        SingleDataModel model = new SingleDataModel();
        DataLoader<String> loader = new DataLoader<>(this, model);
        loader.setLoadStateHelper(new LoadStateHelper(layout));//控制加载中,加载失败,加载成功
        loader.setRefreshViewHelper(new RefreshHelper(layout));//控制刷新
        loader.setOnLoadSuccessListener(new OnLoadSuccessListener<String>() {
            @Override
            public void onSuccess(boolean isRefreshing, String response) {
                textView.setText(response);
            }
        });
        loader.load();
    }
}

或者

public class ListDataActivity extends BaseActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_list_data);
        SwipeRefreshLayout layout = (SwipeRefreshLayout) findViewById(R.id.act_list_data_sfl);
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.act_list_data_rv);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        List<String> list = new ArrayList<>();
        MyAdapter adapter = new MyAdapter(list);
        recyclerView.setAdapter(adapter);

        ListDataModel model = new ListDataModel(list);
        ListLoader<String, String> loader = new ListLoader<>(this, model);
        loader.setLoadStateHelper(new LoadStateHelper(layout));//控制加载中,加载失败,加载成功
        loader.setRefreshViewHelper(new RefreshHelper(layout));//控制刷新
        loader.setListViewHelper(new RecyclerViewHelper(recyclerView));//控制自动加载下一页
        loader.load();
    }
}

这样子就可以了。

loader2's People

Contributors

linxin6560 avatar wangyutao3 avatar

Stargazers

xq.yan avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.