HttpClient解析数据

来源:互联网 发布:mysql怎么进入数据库 编辑:程序博客网 时间:2024/06/05 07:57



import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.bawei.xlistviewlibrary.XListView;
import com.google.gson.Gson;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

    private boolean flag;
    private XListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (XListView) findViewById(R.id.lv);
        lv.setPullLoadEnable(true);
        lv.setXListViewListener(this);
        init();
    }
    public void init() {
        getData("http://ic.snssdk.com/2/article/v25/stream/?category=news_car&count=20&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000");
    }
    public void getData(String url) {
        new AsyncTask<String, Void, String>() {
            private MyBaseAdapter adapter;
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if (s == null) {
                    return;
                }
                Gson gson = new Gson();
                Bean bean = gson.fromJson(s, Bean.class);
                final List<Bean.DataBean> list = bean.getData();
                if (adapter == null) {
                    adapter = new MyBaseAdapter(MainActivity.this, list);
                    lv.setAdapter(adapter);
                } else {
                    adapter.loadMore(flag, list);
                }
                lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        Intent intent = new Intent(MainActivity.this, MyWebView.class);
                        intent.putExtra("myurl", list.get(position - 1).getUrl());
                        startActivity(intent);
                    }
                });
            }
            @Override
            protected String doInBackground(String... params) {
                try {
                    String path = params[0];
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);
                    int code = connection.getResponseCode();
                    if (code == 200) {
                        InputStream is = connection.getInputStream();
                        String str = StreamTools.getStr(is);
                        return str;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute(url);
    }
    @Override
    public void onRefresh() {
        flag = true;
        init();
        lv.stopRefresh();
    }
    @Override
    public void onLoadMore() {
        flag = false;
        init();
        lv.stopLoadMore();
    }

}






//MyBaseAdapter类
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.w3c.dom.Text;
import java.util.List;

/**
 * Created by 额头发 on 2017/9/18.
 */
public class MyBaseAdapter extends BaseAdapter {
    private Context context;
    private List<Bean.DataBean> list;
    //private View view;
    private ViewHolder viewHolder;
    public MyBaseAdapter(Context context, List<Bean.DataBean> list) {
        this.list = list;
        this.context = context;
    }
    public void loadMore(boolean flag,List<Bean.DataBean> lists){
            for (Bean.DataBean listts : lists){
                if (flag){
                    list.add(0,listts);
                }else {
                    list.add(listts);
                }
            }
        notifyDataSetChanged();
    }
    @Override
    public int getCount() {
        return list != null ? list.size() : 0;
    }
    @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) {
        if (convertView == null){
            convertView = View.inflate(context, R.layout.item, null);
            viewHolder = new ViewHolder();
            viewHolder.title = (TextView) convertView.findViewById(R.id.tv1);
            viewHolder.source = (TextView) convertView.findViewById(R.id.tv2);
            viewHolder.middle_image = (ImageView) convertView.findViewById(R.id.image);
            convertView.setTag(viewHolder);
        }
        else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.title.setText(list.get(position).getTitle());
        viewHolder.source.setText(list.get(position).getSource());
        ImageLoader.getInstance().displayImage(list.get(position).getMiddle_image().getUrl(),viewHolder.middle_image);
        return convertView;
    }
    class ViewHolder{
        TextView title,source;
        ImageView middle_image;
    }
}


//App继承Application
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
/**
 * Created by 额头发 on 2017/9/18.
 */
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
                .threadPriority(100)
                .threadPoolSize(3)
                .build();
        ImageLoader.getInstance().init(configuration);
    }
}





//MyWebView类
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
 * Created by 额头发 on 2017/9/18.
 */
public class MyWebView extends AppCompatActivity{
    private WebView wv;
    private String myurl1;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wv);
        wv = (WebView) findViewById(R.id.wew);
        Intent intent = getIntent();
        myurl1 = intent.getStringExtra("myurl");
        wv.setWebViewClient(new WebViewClient());
        wv.getSettings().setJavaScriptEnabled(true);
        wv.loadUrl(myurl1);
    }
}




//StreamTools类
public class StreamTools {
    public static String getStr(InputStream inputStream){
        int len;
        try {
            byte[] arr = new byte[1024];
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            while ((len = inputStream.read(arr)) != -1){
                baos.write(arr,0,len);
            }
            return baos.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}



原创粉丝点击