protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitView();
MainThread mt = new MainThread(newsUrl);
final Thread t = new Thread(mt, "MainThread");
t.start();
pullListView.setOnRefreshListener(new PullListView.OnRefreshListener() {
@Override
public void onRefresh() {
isGetMore = false;
MainThread mt = new MainThread(newsUrl);
Thread t = new Thread(mt, "MainThread");
t.start();
}
});
pullListView.setOnGetMoreListener(new PullListView.OnGetMoreListener() {
@Override
public void onGetMore() {
isGetMore = true;
if (num > 1) {
MainThread mt = new MainThread(nextPage);
Thread t = new Thread(mt, "MainThread");
t.start();
}
}
});
pullListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this,NewsActivity.class);
intent.putExtra("url",list.get(position-1).getUrl());
startActivity(intent);
}
});
}
package com.example.katherine_qj.news;
import android.net.http.HttpResponseCache;
import android.util.Log;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* Created by Katherine-qj on 2016/7/24.
*/
public class NetWorkClass {
public String getDataByGet(String url){
Log.e("qwe","content");
String content ="";
HttpClient httpClient = new DefaultHttpClient();
Log.e("qwe","content1");
/*使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接*/
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
// HttpReponse是服务器接收到浏览器的请求后,处理返回结果常用的一个类。
if(httpResponse.getStatusLine().getStatusCode() == 200) {
/*getStatusLine()
获得此响应的状态行。状态栏可以设置使用setstatusline方法之一,也可以在构造函数初始化*/
InputStream is = httpResponse.getEntity().getContent();
/*getEntity()
获取此响应的消息实体,如果有。实体是通过调用setentity提供。*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null){
content += line;
}
}
}catch (IOException e)
{
Log.e("http",e.toString());
}
Log.e("sdf",content);
return content;
}
}
public class MainThread implements Runnable{
private String url;
public MainThread(String url){
this.url = url;
}
@Override
public void run() {
NetWorkClass netWorkClass =new NetWorkClass();//new 了一个network类
content = netWorkClass.getDataByGet(url);//接收这个类返回的那个字符串也就是需要解析的那一串
Log.e("qwe",content);
handler.sendEmptyMessage(111);
}
}
private final android.os.Handler handler = new android.os.Handler(){
public void handleMessage(Message msg){
switch (msg.what){
case 111:
analyseHTML();
if(isGetMore){
mainAdapter.notifyDataSetChanged();
/*每一次notifyDataSetChange()都会引起界面的重绘。当需要修改界面上View的相关属性的时候,
最后先设置完成再调用notifyDataSetChange()来重绘界面。*/
}else {
mainAdapter = new MainAdapter(MainActivity.this, list);
pullListView.setAdapter(mainAdapter);
}
pullListView.refreshComplete();
pullListView.getMoreComplete();
break;
}
}
};
public void analyseHTML(){
if(content!=null){
int x= 0;
Document document = Jsoup.parse(content);
//解析HTML字符串
if (!isGetMore) {
list.clear();
Element element = document.getElementById("fanye3942");//拿到fanye3942这个节点
String text = element.text();//得到这个节点的文本部分
System.out.print(text);
num = Integer.parseInt(text.substring(text.lastIndexOf('/') + 1, text.length() - 1));
System.out.print(num);
}
Elements elements = document.getElementsByClass("c3942");//得到c3942这个节点中的所有子节点
while(true){
if(x==elements.size()){
System.out.print(elements.size());
break;//遍历到最后就退出
}
News news = new News();
news.setTitle(elements.get(x).attr("title"));//分别得到每一个子节点的需要的文本部分
news.setUrl(elements.get(x).attr("href"));
// list.add(news);
if (!isGetMore||x>10){
list.add(news);
if(x>=25){
break;
}//这个是因为我们学校的网页有重复
}
x++;
}
if (num>1){
nextPage = url+"/"+ --num+".htm";//因为有翻页这里得到了下一页的url在上拉的时候会开启线程去请求数据
System.out.println("qqqqqqqqqqq"+nextPage);
}
}
}
package com.example.katherine_qj.news;
import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* Created by Katherine-qj on 2016/7/25.
*/
public class NewsActivity extends Activity {
private TextView textTitle;
private TextView textEdit;
private TextView textDetail;
private String title;
private String edit;
private String detail;
private StringBuilder text;
private String url;
private Document document;
private String content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
InitView();
url=getIntent().getStringExtra("url");
Log.e("qqq",url);
NewsThread newsThread = new NewsThread(url);
final Thread t = new Thread(newsThread,"NewsActivity");
t.start();
}
public void InitView(){
textTitle =(TextView)findViewById(R.id.textTitle);
textEdit =(TextView)findViewById(R.id.textEdit);
textDetail = (TextView)findViewById(R.id.textDetail);
}
private final android.os.Handler handler = new android.os.Handler(){
public void handleMessage(Message msg){
if(msg.what==1001){
document = Jsoup.parse(content);
analyseHTML(document);
textTitle.setText(title);
textEdit.setText(edit);
textDetail.setText(text);
}
}
};
public class NewsThread implements Runnable{
String url;
public NewsThread(String url){
this.url = url;
}
@Override
public void run() {
NetWorkClass netWorkClass = new NetWorkClass();
content = netWorkClass.getDataByGet(url);
System.out.print("qqq"+content);
handler.sendEmptyMessage(1001);
}
}
public void analyseHTML(Document document){
if (document!=null){
Element element = document.getElementById("nrys");
Elements elements = element.getAllElements();
title = elements.get(1).text();
edit = elements.get(4).text();
Element mElement = document.getElementById("vsb_content_1031");
if(mElement != null) {
Elements mElements = mElement.getAllElements();
text = new StringBuilder();
for (Element melement : mElements) {
if(melement.className().equals("nrzwys") || melement.tagName().equals("strong")){
continue;
}
if(!melement.text().equals(" ") && !melement.text().equals(""));{
text.append(" ").append(melement.text()).append("\n");
}
if (melement.className().equals("vsbcontent_end")) {
break;
}
}
}
}
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有