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)的更多相关文章

  1. 关于ListView中notifyDataSetChanged()刷新数据不更新原因

    使用Listview的时候: 当要动态显示更改后的数据(例如数据库改动), 很多人应该都用过notifyDataSetChanged();这个方法来刷新Listview,显示改后的数据. 这时候就要注 ...

  2. 滚动到底部加载更多及下拉刷新listview的使用

    最新内容建议直接访问原文:滚动到底部加载更多及下拉刷新listview的使用 本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用. 该ListView优点包括:a. 可自定义下 ...

  3. RecyclerView加载更多用notifyDataSetChanged()刷新图片闪烁

    首先来看看对比ListView看一下RecyclerView的Adapter主要增加了哪些方法: notifyItemChanged(int position) 更新列表position位置上的数据可 ...

  4. RecyclerView中notifyDataSetChanged刷新总结

    除了adapter.notifyDataSetChanged()这个方法之外,新的Adapter还提供了其他的方法,如下: public final void notifyDataSetChanged ...

  5. ListView控件绑定DataSet

    DataSet数据集,数据缓存在客户端内存中,支持断开式连接.   在对DataSet做操作的时候,首先一定要修改其行的状态,然后执行SqlDataAdapter的Update方法,Update方法根 ...

  6. 关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法

    文章转载自:关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法 | TeachCourse

  7. 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 ...

  8. 自定义控件学习——下拉刷新ListView

    效果 开始用Android Studio写了,还有挺多不明白这IDE用法的地方....蛋疼 主要思路 1. 添加了自定义的头布局    2. 默认让头布局隐藏setPadding.设置 -自身的高度  ...

  9. Android 自定义下拉刷新ListView

    package com.dwtedx.qq.view; import android.content.Context; import android.util.AttributeSet; import ...

随机推荐

  1. C# 获取当月有多少天

    int days = DateTime.DaysInMonth ( 2009, 9 ); int days = DateTime.DaysInMonth ( DateTime.Now.Year, Da ...

  2. mysql 年龄计算(根据生日字段)

    mysql 年龄计算(根据生日字段) year( from_days( datediff( now( ), birthdate))) //获取年龄 now() 当前时间,精确到秒 datediff(b ...

  3. SfMLearner论文笔记——Unsupervised Learning of Depth and Ego-Motion from Video

    1. Abstract 提出了一种无监督单目深度估计和相机运动估计的框架 利用视觉合成作为监督信息,使用端到端的方式学习 网络分为两部分(严格意义上是三个) 单目深度估计 多视图姿态估计 解释性网络( ...

  4. django-2的路由层(URLconf)

    URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...

  5. dom转换成jquery对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  6. Oracle快速收集AWR的方案

    记一种方便的awr收集方法,该脚本可以按小时收集目标时段的awr 素材:awr_generate.sql(具体脚本内容请见本文末尾) (1)将awr_generate.sql置于数据库服务器本地路径, ...

  7. 《CSS Mastery》读书笔记(4)

    第七章 布局   CSS得到一个不好的名声,比较难懂, 一方面由于浏览器的不兼容,另一方面由于网上大量的技巧,每个CSS作者都可以有自己的方法去创建多列布局, 新的CSS开发者只是使用一种方法而不去理 ...

  8. ViewPager循环滚动

    一.先写个适配器 public class MyPagerAdapter extends PagerAdapter { /** * 上下文 */ private Context context; /* ...

  9. 171129-workaround on ubuntu-seting up piston for steem

    setup ubuntu environment variables sudo vi /etc/environment Then set all below variables: percentCha ...

  10. 【PL/SQL】匿名块、存储过程、函数、触发器

    名词解释 子程序:PL/SQL的过程和函数统称为子程序. 匿名块:以DECLARE或BEGIN开始,每次提交都被编译.匿名块因为没有名称,所以不能在数据库中存储并且不能直接从其他PL/SQL块中调用. ...