项目中ListView使用分析
来源:互联网 发布:mac电脑照片导入iphone 编辑:程序博客网 时间:2024/06/05 21:50
1 我不喜欢用implements 的方式来写代码2 各种方式的区别总结3 看LoadMoreListView源码public class HomeSubjectListUI extends BaseFragmentActivity implements AdapterView.OnItemClickListener, NetRequestUtils.RequestListener, LoadMoreListView.RefreshListener, SwipeRefreshLayout.OnRefreshListener { //加载更多数据lv private LoadMoreListView praoseLv = null; // 刷新控件 private SwipeRefreshLayout swipeLayout; //是否正在加载数据标记,正在加载就是true,反之false,如果正在加载就不再调用接口 //1 初始值false; 2 开始加载数据前判断,false才调用,并改变其状态true;3 在数据回调中改为false private boolean isLoadingData = false; //adapter private HomeSubjectListAdapter adapter; //data private List<SubjectVo> source; //当前页,初始值1(根据后台接口会有不同),加载一页成功之后+1; private int currentPage = 1; //正在加载的页面,如果成功加载完毕,就将其赋值给crrentPage,加载失败就什么都不做,感觉有点多余 //其实就在成功回调中将currentPage++就可以了啊,刷新页面再将currentPage==1; private int oldPage = 1; //没有数据的提示 private TextView empty_view; @Override protected void setContentView() { setContentView(R.layout.praise_list_layout); } @Override protected void findViewById() { praoseLv = (LoadMoreListView) findViewById(R.id.refreshListView); swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container); empty_view = (TextView) findViewById(R.id.empty_view); } @Override protected void setListener() { //? praoseLv.setOnScrollListener(new PauseOnScrollListener(NextApplication.mImageLoader, true, true)); //加载更多的监听 praoseLv.setOnRefreshListener(this); //下拉刷新 swipeLayout.setOnRefreshListener(this); } @Override protected void initData() { swipeLayout.setColorSchemeResources(R.color.app_title_bg); empty_view.setVisibility(View.GONE); //提前new ArrayaList source = new ArrayList<SubjectVo>(); //提前new Adapter adapter = new HomeSubjectListAdapter(this, source); //提前setAdapter,这三步有时候我是在加载完数据之后做的 praoseLv.setAdapter(adapter); new Handler().postDelayed(new Runnable() { @Override public void run() { swipeLayout.setRefreshing(true); loadData(1); } }, 500); mRequestUtils = NetRequestUtils.getInstance(); } private void loadData(int page) { if (isLoadingData) { return; } isLoadingData = true; oldPage = page; Map<String, String> params = new HashMap<String, String>(); params.put("page", page + ""); params.put("type", type + ""); params.put("classid","0"); JSONObject jsonRequest = mRequestUtils.getJsonRequest("home", "class_get_video", params); mRequestUtils.requestJsonObject(jsonRequest, this); } @Override public void onRefresh() { loadData(1); } @Override public void loadMore() { loadData(currentPage + 1); } @Override public void start() { } @Override public void success(JSONObject response) { currentPage = oldPage; if (currentPage == 1) { source.clear(); } //这里用的是原生的解析方式 JSONArray jsonArray = response.optJSONArray("data"); parseJson(jsonArray); adapter.resetSource(source); isLoadingData = false; swipeLayout.setRefreshing(false); //判断请求回来数据的个数,后台定义一页有10条数据,如果小于10条,说明数据加载完毕,不用再去调加载更多的接口,反之就去加载 if (jsonArray != null && jsonArray.length() >= 10) { praoseLv.resetFooterState(true); } else { praoseLv.resetFooterState(false); } } @Override public void error(VolleyError error, int errorCode, String errorMsg) { isLoadingData = false; swipeLayout.setRefreshing(false); if (error != null) { error.printStackTrace(); } else { MyToast.showToast(this, errorMsg); } } /* 解析json 将arr中的obj循环遍历拿出来,解析为我们要的对象,在一个个add到source中 比较麻烦,用gson可以直接解析为我们要的List,然后addAll,如果是下拉刷新,或者加载第一页 这里的方式是进行判断,如果currentPage是1,那么将source清空,否则就add */ private void parseJson(JSONArray jsonArray) { if (jsonArray != null) { if (jsonArray.length() > 0) { int count = jsonArray.length(); for (int i = 0; i < count; i++) { SubjectVo uInfo = new SubjectVo().parse(jsonArray.optJSONObject(i)); source.add(uInfo); } } } }}
阅读全文
0 0
- 项目中ListView使用分析
- ICE项目中使用现状分析
- ScrollView中嵌套ListView分析
- Dephi中使用ListView
- ListView中使用CheckBox
- android中使用listview
- Fragment中使用listview
- Android中ListView使用
- ListView中使用CheckBox
- ListView中使用checkBox
- Fragment中使用listview
- Android中ListView使用
- listview中checkbox使用
- Listview的headView中使用listview
- 项目中那些事|ListView中嵌套ListView问题
- Listview中使用线程实现无限加载更多项目的功能
- C# winform项目中ListView控件使用CheckBoxes属性实现单选功能
- 项目使用中listview多选或者说是PullToRefreshListView多选的个人解决方案
- vi命令的使用
- Unity获取隐藏物体
- 不同型号DVR的通道模式选择
- Tomcat最基本的五脏六腑与经络运行
- 网络地址处理方法<arpa/inet.h>
- 项目中ListView使用分析
- 自己对回调函数的一些简单理解
- CURL支持HTTPS,FTPS等的配置
- 根据QR码API下载图片
- Android 使用Post方式提交数据
- Linux操作文件
- 13、jQuery插件之Lazy Load图片延迟加载插件
- Spring--IoC--基于注解的DI-@Scope
- PHP超级全局变量与魔术变量