AsynckTask异步加载
来源:互联网 发布:管家婆怎么安装数据库 编辑:程序博客网 时间:2024/05/21 15:05
package com.liulailin.async;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import static android.R.attr.data;
public class MainActivity extends AppCompatActivity {
String path ="https://www.toutiao.com/api/pc/focus/";
private ListView lv;
List<BeanData.DataBean.PcFeedFocusBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
//getData();
//Void
new AsyncTask<String ,String,String>(){
/**
* 子线程里面运行,做联网的操作
* @param strings
* @return
*/
@Override
protected String doInBackground(String... strings) {
String path = strings[0];
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//get请求
urlConnection.setRequestMethod("GET");
//超时连接
urlConnection.setConnectTimeout(5000);
int responseCode = urlConnection.getResponseCode();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (responseCode==200){
InputStream inputStream = urlConnection.getInputStream();
int len;
byte[] arr = new byte[1024*20];
while ((len=inputStream.read(arr))!=-1){
baos.write(arr,0,len);
}
}
//返回的值
return baos.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 在主线程里面运行,可以做UI更新操作
* @param s
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
BeanData beanData = gson.fromJson(s, BeanData.class);
//集合就是所有的数据的集合
list = beanData.getData().getPc_feed_focus();
lv.setAdapter(new MyAdapter());
// Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
//解析的操作,和展示到页面的操作
}
}.execute(path);
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
TextView tv = new TextView(MainActivity.this);
tv.setText(list.get(i).getTitle());
return tv;
}
}
}
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import static android.R.attr.data;
public class MainActivity extends AppCompatActivity {
String path ="https://www.toutiao.com/api/pc/focus/";
private ListView lv;
List<BeanData.DataBean.PcFeedFocusBean> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
//getData();
//Void
new AsyncTask<String ,String,String>(){
/**
* 子线程里面运行,做联网的操作
* @param strings
* @return
*/
@Override
protected String doInBackground(String... strings) {
String path = strings[0];
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//get请求
urlConnection.setRequestMethod("GET");
//超时连接
urlConnection.setConnectTimeout(5000);
int responseCode = urlConnection.getResponseCode();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (responseCode==200){
InputStream inputStream = urlConnection.getInputStream();
int len;
byte[] arr = new byte[1024*20];
while ((len=inputStream.read(arr))!=-1){
baos.write(arr,0,len);
}
}
//返回的值
return baos.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 在主线程里面运行,可以做UI更新操作
* @param s
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
BeanData beanData = gson.fromJson(s, BeanData.class);
//集合就是所有的数据的集合
list = beanData.getData().getPc_feed_focus();
lv.setAdapter(new MyAdapter());
// Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
//解析的操作,和展示到页面的操作
}
}.execute(path);
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
TextView tv = new TextView(MainActivity.this);
tv.setText(list.get(i).getTitle());
return tv;
}
}
}
阅读全文
0 0
- AsynckTask异步加载
- asyncktask详解
- AsynckTask的执行原理
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- *【异步加载】
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- 异步加载
- hibernate系列十七:Criteria查询
- @WebServlet("/A")问题
- 敏捷开发
- maven项目遇到cannot change version web module 3.0
- view.getX()、view.getY()、view.getLeft()、view.getRight()、view.getTranslationX()与动画
- AsynckTask异步加载
- Optimizing Realtime UVs
- C++程序,产生随机数
- python字符串前面加u,r,b的含义
- maven项目整合Spring与quartz出现的定时器任务二次重复执行问题(2017年12月2日16:57:32)
- 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。
- mysqlbinlog 查看binlog时报错unknown variable 'default-character-set=utf8'
- sql 优化
- 【C++】第13章 类继承 知识点总结