notifyDataSetChanged()刷新ListView(使用JSONArray绑定的Adapter)
1.fragment代码:
package com.ts.fragment;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.example.mywinxintest.R;
import com.ts.fragment.AutoListView;
import com.ts.fragment.AutoListView.OnLoadListener;
import com.ts.fragment.AutoListView.OnRefreshListener;
import com.ts.myst.JSONArrayAdapter;
import com.ts.util.HttpUtil;
import android.annotation.SuppressLint;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
public class SearchFragment extends Fragment implements OnRefreshListener,
OnLoadListener
{
Spinner areaSpinner;
TextView searchTextView;
ListView itemListView;
Map<String, String> countMap = new HashMap<String, String>();
String url1 = HttpUtil.BASE_URL+"asset_findAssetArea.action";
String url2 = HttpUtil.BASE_URL+"asset_findAssetSB.action";
String url3 = HttpUtil.BASE_URL+"asset_findAssetSBCount.action";
private AutoListView lstv;
private JSONArrayAdapter jsonArrayAdapter;
private JSONArray itemJsonArray = new JSONArray();
private String areaId;
private Handler handler = new Handler(){
@SuppressLint("NewApi")
public void handleMessage(Message msg) {
String result = (String) msg.obj;
JSONArray resultJsonArray = null;
try {
resultJsonArray = new JSONArray(result);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
switch (msg.what) {
case AutoListView.REFRESH:
lstv.onRefreshComplete();
try {
for (int i = 0; i < itemJsonArray.length(); i++) {
itemJsonArray.remove(i);
}
for (int i = 0; i < resultJsonArray.length(); i++) {
itemJsonArray.put(resultJsonArray.get(i));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case AutoListView.LOAD:
lstv.onLoadComplete();
for (int i = 0; i < resultJsonArray.length(); i++) {
try {
itemJsonArray.put(resultJsonArray.get(i));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;
}
lstv.setResultSize(resultJsonArray.length());
jsonArrayAdapter.notifyDataSetChanged();
};
};
@Override
public View onCreateView(LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.search_fragment, null) ;
lstv = (AutoListView) v.findViewById(R.id.lstv);
try{
itemJsonArray = new JSONArray("[]");
jsonArrayAdapter = new JSONArrayAdapter(getActivity(), itemJsonArray, "assetCode_assetName_assetSyr", false, "3");
// itemListView.setAdapter(adapter2);
lstv.setAdapter(jsonArrayAdapter);
lstv.setOnRefreshListener(this);
lstv.setOnLoadListener(this);
initData(areaId);
@Override
public void onNothingSelected(AdapterView<?
> parent) {
// TODO Auto-generated method stub
}
});
}
catch(Exception e){
e.printStackTrace();
}
return v ;
}
private void initData(String areaId) {
loadData(AutoListView.REFRESH,areaId);
}
private void loadData(final int what, final String areaId) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(700);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message msg = handler.obtainMessage();
msg.what = what;
try {
msg.obj = <span style="font-family: Arial, Helvetica, sans-serif;">getData(areaId) <span style="font-family: Arial, Helvetica, sans-serif;">;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendMessage(msg);
}
}).start();
}
@Override
public void onLoad() {
// TODO Auto-generated method stub
loadData(AutoListView.LOAD,areaId);
}
@Override
public void onRefresh() {
// TODO Auto-generated method stub
loadData(AutoListView.REFRESH,areaId);
}
// 測试数据
public String getData(String areaId) {
String result = null;
try {
result = HttpUtil.postRequest(url2, countMap);//通过server获取数据
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
notifyDataSetChanged()刷新ListView(使用JSONArray绑定的Adapter)的更多相关文章
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
使用Listview的时候: 当要动态显示更改后的数据(例如数据库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的数据. 这时候就要注 ...
- 滚动到底部加载更多及下拉刷新listview的使用
最新内容建议直接访问原文:滚动到底部加载更多及下拉刷新listview的使用 本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用. 该ListView优点包括:a. 可自定义下 ...
- RecyclerView加载更多用notifyDataSetChanged()刷新图片闪烁
首先来看看对比ListView看一下RecyclerView的Adapter主要增加了哪些方法: notifyItemChanged(int position) 更新列表position位置上的数据可 ...
- RecyclerView中notifyDataSetChanged刷新总结
除了adapter.notifyDataSetChanged()这个方法之外,新的Adapter还提供了其他的方法,如下: public final void notifyDataSetChanged ...
- ListView控件绑定DataSet
DataSet数据集,数据缓存在客户端内存中,支持断开式连接. 在对DataSet做操作的时候,首先一定要修改其行的状态,然后执行SqlDataAdapter的Update方法,Update方法根 ...
- 关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法
文章转载自:关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法 | TeachCourse
- ListView:The content of the adapter has changed but ListView did not receive a notification终极解决方法
使用ListView时遇到如下的异常信息: 10-26 18:30:45.085: E/AndroidRuntime(7323): java.lang.IllegalStateException: T ...
- 自定义控件学习——下拉刷新ListView
效果 开始用Android Studio写了,还有挺多不明白这IDE用法的地方....蛋疼 主要思路 1. 添加了自定义的头布局 2. 默认让头布局隐藏setPadding.设置 -自身的高度 ...
- Android 自定义下拉刷新ListView
package com.dwtedx.qq.view; import android.content.Context; import android.util.AttributeSet; import ...
随机推荐
- 初学jQuery之jQuery虚假购物车-------与真实数据无关
初学者用jquery来写仿真的购物车,确实有点恶心,那我们今天就把这万恶的购物车剖析一下,来看看到底有什么难的. 购物车的效果图 那我们先从复选框开始吧,废话不多说,上代码!! 带有序号的,都是一些分 ...
- chm文件打开无显示解决办法
右键单击chm文件---属性---在该页面选择“解除锁定”---ok!
- 使用Reporting Services时遇到的小问题
同事忙不开了交过来的一个小问题,以前我也没有做过Reporting Services相关的. 大概看了一下,是数据集那边的查询代码接收不到报表参数,而且不是单纯地接收不到,具体情况如下.. 命令类型是 ...
- PHP安装环境搭建
一. 安装PHP运行服务器 xampps-x64 二.安装PHP程序编辑软件(Zend Studo需要破解) 安装后打开,再关闭 把com.zend.php.core_10.6.0.v20140128 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
http://www.cnblogs.com/wuhuacong/p/4757984.html 最近一直很多事情,博客停下来好久没写了,整理下思路,把最近研究的基于Metronic的Bootstrap ...
- spring3+quartz2
听说来自这里www.ydyrx.com 转载的: 最近公司要用定时任务,自己想着学习并完成任务,百度,google,360,必应,能用的搜索都用了,参差不齐,搞了一整天,也没找到一个好的例子.没办法, ...
- wx 小程序开发---开发者工具使用
1:右侧详情界面 合法域名 都要在需要在小程序平台 配置合法域名 这样你的小程序请求的网址 才能通. 1.2如果自己的域名没有配置https 可以勾选为 不校验合法域名即可 (小程序官方规定 网址必须 ...
- mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复
转载自 https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c42cf94e51d45524861122d#heading-8 mysql ...
- 【JavaScript游戏开发】JavaScript+HTML5封装的苏拉卡尔塔游戏(包含源码)
/** 苏拉克尔塔游戏 * 思路: * 1.棋盘设置:使用HTML5的canvas标签绘制整个棋盘 * 2.点击事件:当页面被点击时,获取点击的x,y像素点,根据此像素点进行判断,再在合适位置绘制黑红 ...
- NOIP2013 DAY2 T3火车运输
传送门 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况 ...