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 ...
随机推荐
- Android PopWindow的替代品BasePopup
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/109 背景描述 最近一段时间,又看到了这个开源项目Base ...
- ASP.NET Core 多环境
ASP.NET Core 支持在多个环境中管理应用程序,如开发(Development),预演(Staging)和生产(Production).环境变量用来指示应用程序正在运行的环境,允许应用程序适当 ...
- css中标签,类名,id名的命名 语义化命名
作为前端开发人,经常头疼于雷鸣,标签,id名的命名,不知道应该基于什么原则. 原则: 2 当命名的时候,问自己,这个元素是要来做什么?(根据使用目的).ad-banner 4 避免依靠位置和视觉效果命 ...
- 【java并发】(1)深入理解volatile关键字
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- [转]常用Git命令清单
原文地址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 作者: 阮一峰 日期: 2015年12月 9日 我每天使用 Git , ...
- dubbo之多注册中心
Dubbo 支持同一服务向多注册中心同时注册,或者不同服务分别注册到不同的注册中心上去,甚至可以同时引用注册在不同注册中心上的同名服务.另外,注册中心是支持自定义扩展的. 多注册中心注册 比如:中文站 ...
- 【sqli-labs】 less12 POST - Error Based - Double quotes- String-with twist (基于错误的双引号POST型字符型变形的注入)
加个双引号 通过报错信息猜测SQL语句 , 将括号闭合掉,通过注释后面的条件登录
- HDU_3999_二叉排序树
The order of a Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Redis 通用key操作命令
1.在redis里面允许模糊查询key,有3个通配符:*,?,[]. *:通配任意字符 ?:通配单个字符 []:通配中括号内的某个字符 例如: 2.randomKey 随机返回所有key中的某个 3. ...
- Can't find variable: SockJS vue项目
用的vue-cli(webpack-simple模板),在开发环境运行(npm run dev),一直都没有问题,突然在ios的safari中调试,出现报错:Can't find variable: ...