加载数据到ListView
来源:互联网 发布:雅马哈合成器 知乎 编辑:程序博客网 时间:2024/06/05 17:24
RequestDataActivity.java
package com.studio.listviewproject.listview;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.widget.ListView;import com.studio.listviewproject.R;import com.studio.listviewproject.adapter.RequestDataAdapter;import com.studio.listviewproject.model.LessonInfo;import com.studio.listviewproject.model.LessonResult;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;public class RequestDataActivity extends AppCompatActivity { private ListView mListView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.main_list_view); LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View footerView = layoutInflater.inflate(R.layout.header_list_view, null); mListView.addFooterView(footerView); //List<data> item.view new RequestDataAsyncTask().execute(); } public class RequestDataAsyncTask extends AsyncTask<Void, Void, String> { static final String STATUS = "status"; static final String DATA = "data"; static final String NAME = "name"; public static final String REQUEST_DATA_URL = "http://www.imooc.com/api/teacher?type=2&page=1"; @Override protected void onPreExecute() { super.onPreExecute(); //Loading } @Override protected String doInBackground(Void... voids) { return request(REQUEST_DATA_URL); } private String request(String urlString) { try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(30000); connection.setRequestMethod("GET"); connection.connect(); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream()); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } return stringBuilder.toString(); } } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); //Loading 消失,数据处理 刷新界面 LessonResult lessonResult = new LessonResult(); try { JSONObject jsonObject = new JSONObject(result); final int status = jsonObject.getInt(STATUS); lessonResult.setmStatus(status); final String msg = jsonObject.getString("msg"); lessonResult.setmMessage(msg); List<LessonInfo> lessonInfos = new ArrayList<>(); JSONArray dataArray = jsonObject.getJSONArray(DATA); for (int index = 0; index < dataArray.length(); index++) { LessonInfo lessonInfo = new LessonInfo(); JSONObject tempJSONObject = (JSONObject) dataArray.get(index); final String name = tempJSONObject.getString(NAME); lessonInfo.setmName(name); lessonInfos.add(lessonInfo); } lessonResult.setmLessonInfoList(lessonInfos); //GSON FastJson } catch (JSONException e) { e.printStackTrace(); } mListView.setAdapter(new RequestDataAdapter(RequestDataActivity.this, lessonResult.getmLessonInfoList())); } }}
RequestDataAdapter.java
package com.studio.listviewproject.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.studio.listviewproject.R;import com.studio.listviewproject.model.LessonInfo;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/8/31. */public class RequestDataAdapter extends BaseAdapter { private List<LessonInfo> mLessonInfos = new ArrayList<>(); private Context mContext; public RequestDataAdapter(Context context, List<LessonInfo> infos) { mLessonInfos = infos; mContext = context; } @Override public int getCount() { return mLessonInfos.size(); } @Override public Object getItem(int i) { return mLessonInfos.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder = new ViewHolder(); if (view == null) { LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = layoutInflater.inflate(R.layout.item_app_list_view, null); viewHolder.mAppIconImageView = view.findViewById(R.id.app_icon_image_view); viewHolder.mAppNameTextView = view.findViewById(R.id.app_name_text_view); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.mAppNameTextView.setText(mLessonInfos.get(i).getmName()); viewHolder.mAppIconImageView.setVisibility(View.GONE); return view; } class ViewHolder { public ImageView mAppIconImageView; public TextView mAppNameTextView; }}
阅读全文
0 0
- 加载数据到ListView
- 网络加载数据到ListView
- android listview滑动到底部加载数据
- listview滚动到底部自动加载数据
- ListView滚动到底部自动加载数据
- ListView滑动到底部加载数据
- ListView滚动到底部自动加载数据
- 异步加载数据,图片,展示到listView
- 通过网络加载数据显示到ListView
- Android Listview 分页加载数据(滑到底部加载)
- Android 实现ListView滚动到底部自动加载数据
- ListView滚动到底部自动加载更多数据
- 读出Sqlite中的数据并加载到ListView上
- 滚动到顶部自动加载数据的listview封装
- 网络连接取数据,并加载到ListView的实现
- ListView滚动到底部自动加载下一页数据
- <学习笔记>Android使用Loader加载sqlite数据到ListView
- HttpURLConnection请求json数据加载到ListView上
- aliyun阿里云Maven仓库地址——加速你的maven构建
- 第五十七篇:commons-collections使用介绍之Bag
- 虚拟机ping不通主机,无法上网问题
- 汇哲科技- 8月31日国盟CISA每日一题
- 记一次页面失效,你正在尝试访问一个无效页面的错误
- 加载数据到ListView
- 微信网页授权登陆如何实现回调多个域名?
- 汇哲科技- 8月31日国盟CISSP每日一题
- JavaScriptSerializer序列化和反序列化JSON:使用自定义JavaScriptConverter JSON的序列化和反序列化已经成为Web开发必不可少的知识。现在常用的有Syste
- map和reduce数量控制
- 第五十八篇:commons-collections使用介绍之List
- 汇哲科技-8月31日国盟CISM每日一题
- Unix信号详解(Signal的信号说明)
- Oracle跟MySQL的区别和联系