获取网络数据中的数组显示成ListView的简单流程
2013-11-01 17:45
459 查看
首先说一下 这是我自己的个人笔记,如果想看看,不用看细节,可以看流程。
定义一个线程池 ExecutorService pool = Executors.newFixedThreadPool(15);
运用线程获取网络数据 即编辑相关的访问方法以及参数
获得相关JSON数据进行解析,当然首先得创建一个实体类 即下面方法的参数 clazz,参数jsonStr就是获得的网络JSON数据,clazz这个就是一个数组对象了,所包含的字段,可以在实体类中定义相关的变量。
STATUS STATUS_SUCCESS INFO 这些是我自己写的相关常量
上面方法得到的就是一个我们要在ListView当中显示的数组数据。然后将它通过消息Message发送到主线程的Handler中进行处理 即
SUCCESS 为自己写的常量
这样就拿到了数组了,现在的问题是,怎样实时显示到ListView当中, 步骤可以这样:
一 先定义一个类 它进行了适配器当中数据的更改、刷新 即
二 这样我们就可以调用 setDatas()方法,所带的数组参数的不同,进行ListView的更新,显示不同的数据。
定义一个线程池 ExecutorService pool = Executors.newFixedThreadPool(15);
运用线程获取网络数据 即编辑相关的访问方法以及参数
public static String sendDataByHttpClientPost(String url, List<NameValuePair> parameters) throws Exception { HttpClient client = new DefaultHttpClient(); client.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT); client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, TIME_OUT); HttpPost httppost = new HttpPost(url); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8"); httppost.setEntity(entity); HttpResponse ressponse = client.execute(httppost); int code = ressponse.getStatusLine().getStatusCode(); if (code == Status.SUCCESS) { InputStream is = ressponse.getEntity().getContent(); byte[] result = getBytes(is); return new String(result); } else { throw new IllegalStateException("服务器状态异常"); } }
获得相关JSON数据进行解析,当然首先得创建一个实体类 即下面方法的参数 clazz,参数jsonStr就是获得的网络JSON数据,clazz这个就是一个数组对象了,所包含的字段,可以在实体类中定义相关的变量。
STATUS STATUS_SUCCESS INFO 这些是我自己写的相关常量
public static <T> List<T> parseList(String jsonStr, Class<T> clazz) throws JSONException { JSONObject json = new JSONObject(jsonStr); String response = json.getString(STATUS); List<T> list = new ArrayList<T>(); if (response != null && response.equals(STATUS_SUCCESS)) { String info = json.getString(INFO); if (!TextUtils.isEmpty(info) && !info.equals("null")) { list = (List<T>) JSON.parseArray(info, clazz); return list; } else { return list; } } else { throw new IllegalStateException(); } }
上面方法得到的就是一个我们要在ListView当中显示的数组数据。然后将它通过消息Message发送到主线程的Handler中进行处理 即
message = handler.obtainMessage(Status.SUCCESS, list); message.sendToTarget();
SUCCESS 为自己写的常量
这样就拿到了数组了,现在的问题是,怎样实时显示到ListView当中, 步骤可以这样:
一 先定义一个类 它进行了适配器当中数据的更改、刷新 即
package com.sinosoft.foodsafemanagerv2.function.task.unionmeeting; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.content.Context; import android.widget.ListView; import com.sinosoft.adpter.MySimpleAdpter; import com.sinosoft.foodsafemanagerv2.R; import com.sinosoft.foodsafemanagerv2.entity.Case; public class UnionRecordListView { private ListView listView; private MySimpleAdpter myAdapter; private ArrayList<HashMap<String, Object>> datas; private Context context; private String[] from; public UnionRecordListView() { super(); } public UnionRecordListView(final Context context, ListView listView) { this.context = context; this.listView = listView; from = new String[] { "img", "type_name", "time_type" }; datas = new ArrayList<HashMap<String, Object>>(); myAdapter = new MySimpleAdpter(context, datas, R.layout.layout_recordlistview_item, from, new int[] { R.id.imageview, R.id.name_or_type_text, R.id.type_or_time_text }); listView.setAdapter(myAdapter); } /** * 设置数据 * * @param list */ public void setDatas(List<Case> list) { ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>(); for (Case c : list) { HashMap<String, Object> map = new HashMap<String, Object>(); String imgs = c.getImgIds(); map.put(from[0], c.getCaseId()); map.put(from[1], c.getUnitName()); map.put(from[2], c.getTypeName()); data.add(map); } this.datas = data; myAdapter.setListData(data); myAdapter.notifyDataSetChanged(); } }
二 这样我们就可以调用 setDatas()方法,所带的数组参数的不同,进行ListView的更新,显示不同的数据。
相关文章推荐
- [置顶] 获取网络数据中的数组显示成ListView的简单流程
- json数据解析,并实现将网络json数据获取用listview显示
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- 两个Fragment切换,BFragment中的listview 数据获取回来 为什第一次进入不显示第二次进入数据就显示了呢?ListView网络数据没有及时更新
- React Native 网络获取数据后,listView显示数据
- React Native从零开始(八)ListView网络获取数据(Fetch)显示
- PullToRefreshListView上拉加载,下拉刷新 刷新网络数据 简单实现ListView显示网络数据
- Android ListView从网络获取图片及文字显示---图片缓存,多线程处理
- 获取已经安装APK的路径 多进程Preferences数据共享 泛型ArrayList转数组 保存恢复ListView当前位置 调用便携式热点和数据共享设置 格式化 文件夹排
- 从网络获取数据显示到TableViewCell容易犯的错
- Kotlin学习记录(三)—— 子线程获取数据,实现简单ListView
- android 获取网络数据,回传到本地用TextView显示乱码问题解决方法
- mono for Android配置环境和listview简单显示数据(2)
- 从网络上异步加载数据,显示到ListView上
- Android ListView从网络获取图片及文字显示
- AsyncTask 网络获取图片和Json数据加载到ListView上
- 用ListView来显示解析jsonstr数组后的数据
- 判断网络状态 fragment隐藏显示 xlistview多条目加载数据
- 二级列表ExpendableListView实现从网络上获取数据
- 实现侧栏,为Xlistview获取网络数据