AsyncTask+ListView

来源:互联网 发布:weka apriori算法 编辑:程序博客网 时间:2024/06/08 09:06

//布局:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.e.wangluopanduan.MainActivity">    <ListView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/listView" /></RelativeLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/text1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="20sp" />    <TextView        android:id="@+id/text2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="20sp" /></LinearLayout>//在AndroidManifest.xml中配置
<uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

 
//代码如下:

MainActivity:

package com.example.e.wangluopanduan;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView listView;    private String path;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listView);        if (isNetworkAvailable(this)){            MyAsyncTask myAsyncTask = new MyAsyncTask(this);            path="http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android";            myAsyncTask.execute(path,listView);        }else {            List<String> list=new ArrayList<>();            list.add("网络超时...");            ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);            listView.setAdapter(adapter);        }    }    public static boolean isNetworkAvailable(Context context) {        ConnectivityManager connectivity = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        if (connectivity != null) {            NetworkInfo info = connectivity.getActiveNetworkInfo();            if (info != null && info.isConnected()) {                // 当前网络是连接的                if (info.getState() == NetworkInfo.State.CONNECTED) {                    // 当前所连接的网络可用                    return true;                }            }        }        return false;    }}


//MyAsyncTask:

package com.example.e.wangluopanduan;import android.content.Intent;import android.os.AsyncTask;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import com.google.gson.Gson;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;/** * Created by e on 2017/5/12. */public class MyAsyncTask extends AsyncTask<Object, String, String> {    private MainActivity activity;    private ListView listView;    private List<Bean.DataBean.SerialBean> list;    public MyAsyncTask(MainActivity activity) {        this.activity = activity;    }    @Override    protected String doInBackground(Object... params) {        try {            String path = (String) params[0];            listView = (ListView) params[1];            URL url = new URL(path);            HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();            httpURLConnection.connect();            if (httpURLConnection.getResponseCode()==HttpURLConnection.HTTP_OK){                InputStream inputStream = httpURLConnection.getInputStream();                StringBuffer stringBuffer = new StringBuffer();                byte[]buff=new byte[1024];                int len=-1;                while ((len=inputStream.read(buff))!=-1){                    String s = new String(buff, 0, len, "utf-8");                    stringBuffer.append(s);                }                inputStream.close();                httpURLConnection.disconnect();                Log.w("doInBackground","onPostExecute:"+stringBuffer.toString());                return stringBuffer.toString();            }else {                return null;            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        Log.d("onPostExecute","onPostExecute"+s);        Gson gson=new Gson();        list=new ArrayList<>();        Bean bean=gson.fromJson(s,Bean.class);        list.addAll(bean.getData().getSerial());        final MyAdapter adapter = new MyAdapter(activity, list);        listView.setAdapter(adapter);    }}

//MyAdapter:


package com.example.e.wangluopanduan;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;/** * Created by e on 2017/5/12. */public class MyAdapter extends BaseAdapter{    private Context context;    private List<Bean.DataBean.SerialBean> list;    public MyAdapter(Context context, List<Bean.DataBean.SerialBean> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Holder holder;        if (convertView==null){            holder=new Holder();            convertView=View.inflate(context,R.layout.item_layout,null);            holder.tv1= (TextView) convertView.findViewById(R.id.text1);            holder.tv2= (TextView) convertView.findViewById(R.id.text2);            convertView.setTag(holder);        }else {            holder= (Holder) convertView.getTag();        }        Bean.DataBean.SerialBean serialBean=list.get(position);        holder.tv1.setText(serialBean.getTitle());        holder.tv2.setText(serialBean.getExcerpt());        return convertView;    }    class Holder{        TextView tv1;        TextView tv2;    }}

1 0
原创粉丝点击