开源软件名称:BasicSupportLayer
开源软件地址:https://gitee.com/bvin_admin/BasicSupportLayer
开源软件介绍:
BasicSupportLayer这是一个可面向所有Android项目的支持库框架,提供一些基础、便捷的服务 RequestActivity用法:Request可以用GsonRequest,如果需要自定义请求就需要自己去把服务器返回数据解析成对应的模型类,然后把Responces.Listener和ErrorListener设置成this,如果是RequestFragment则设置成getRequestActivity(),因为RequestFragment也是用RequestActivity代理请求. 一定要给RequestActiviy的mRequestHolderFragment赋值加载视图和出错视图等自动处理才会生效,mRequestHolderFragment可以作为一个独立的外部类方便重复利用,并且这个mRequestHolderFragment和RequestFragment是同处于RequestActivity中的。 onRequestStart和onRequestFailure在RequestActivity父类中作了处理,无需特别之处不需要再做处理,只需要在onRequestSuccess方法里处理数据。
public class TestRequestActivity extends RequestActivity<TestRequestActivity.TestModel>{ String url; Map<String, Object> params; @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); parserIntent(); initData(); initViews(); startRequest(); } @Override public void parserIntent() { super.parserIntent(); url = getIntent().getStringExtra("/..."); params.put(key, value) } @Override public void initData() { super.initData(); } @Override public void initViews() { super.initViews(); //请求占位Fragment mRequestHolderFragment = new AbstractRPFragment() { @Override public void initViews(View rootView) { mLoadingFrame = rootView.findViewById(id) mEmptyFrame = rootView.findViewById(id) mErrorFrame = rootView.findViewById(id) tvEmptyTips = rootView.findViewById(id) tvErrorSceneTips = rootView.findViewById(id) tvLoadTip = = rootView.findViewById(id) } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.activity_list_item, container); initViews(v); return v; } }; } @Override public void onRequestStart(Request<TestModel> resquest) { super.onRequestStart(resquest); } @Override public void onRequestSuccess(TestModel result) { super.onRequestSuccess(result); } @Override public void onRequestFailure(VolleyError error) { super.onRequestFailure(error); } private void startRequest() { GsonRequest<TestModel> request = new GsonRequest<>(url, params, TestModel.class, this, this); addRequest(request); } //请求返回结果的模型 public class TestModel{ }} 标准的RequestHolderFragment示例** * * @ClassName: RequestHolderFragment * @Description: 继承AbstractRPFragment,只需要继承实现initViews()方法和onCreateView, * 只需要在子类加载布局和绑定控件 * @author: Bvin * @date: 2015年2月2日 上午10:53:53 */public class RequestHolderFragment extends AbstractRPFragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.univ_request_place_holder, container, false); initViews(rootView); return rootView; } @Override public void initViews(View rootView) { mLoadingFrame = rootView.findViewById(R.id.loading_frame); mEmptyFrame = rootView.findViewById(R.id.empty_frame); mErrorFrame = rootView.findViewById(R.id.error_frame); //错误视图是可以去点击重新请求的 mErrorFrame.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { getRequestActivity().reloadRequest(); } }); tvLoadTip = (TextView) mLoadingFrame.findViewById(R.id.tvLoadTip); tvEmptyTips = (TextView) mEmptyFrame.findViewById(R.id.tvEmptyTips); tvErrorSceneTips = (TextView) mErrorFrame.findViewById(R.id.tvErrorSceneTips); defaultLoadTips = ResourceFinder.findString(getActivity(), R.string.loading_tips); defaultEmptyTips = ResourceFinder.findString(getActivity(), R.string.empty_tips); defaultSceneError = ResourceFinder.findString(getActivity(), R.string.error_scene_tips); defaultErrorSolution = ResourceFinder.findString(getActivity(), R.string.error_solution_click_retry); }} ##License Copyright 2014-2015 BvinLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. |
请发表评论