感谢各位,帮我看一下这个吧,getNews()是简单爬虫,toGetNews()是关键字爬虫(原理比较简单)mSearchView是一个搜索栏。
能够通过搜索栏传值,但是点击搜索确认后不能进行关键字爬虫,好苦恼,确认搜索里面我写了方法,听人说是线程问题,但对这个我不太清楚,恳请大家指教。
如下图所示:
![](https://img7.php1.cn/3cdc5/f27f/711/13269f151008f956.png)
![](https://img7.php1.cn/3cdc5/f27f/711/6478d611a7531355.png)
package com.haopeng.thenews.fragment;import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;import com.haopeng.thenews.NewsDisplayActivity;
import com.haopeng.thenews.R;
import com.haopeng.thenews.adapter.NewsAdapter;
import com.haopeng.thenews.entity.News;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;import java.util.ArrayList;
import java.util.List;/*** Created by Administrator on 2017/5/7.*/public class Main extends Fragment {private List newsList;private NewsAdapter adapter;private Handler handler;private ListView lv;private View main;private SearchView mSearchView;public String Query;&#64;Nullable&#64;Overridepublic View onCreateView(LayoutInflater inflater, &#64;Nullable ViewGroup container, &#64;Nullable Bundle savedInstanceState) {main&#61;inflater.inflate(R.layout.main,null);lv &#61; (ListView) main.findViewById(R.id.news_lv);mSearchView&#61;(SearchView)main.findViewById(R.id.searchView);mSearchView.setSubmitButtonEnabled(true);newsList &#61; new ArrayList<>();getNews();mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {&#64;Overridepublic boolean onQueryTextSubmit(String query) {Query&#61;query;System.out.println(Query);toGetNews();handler &#61; new Handler(){&#64;Overridepublic void handleMessage(Message msg) {if(msg.what &#61;&#61; 1){adapter &#61; new NewsAdapter(getActivity(),newsList);lv.setAdapter(adapter);lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {&#64;Overridepublic void onItemClick(AdapterView> parent, View view, int position, long id) {News news &#61; newsList.get(position);Intent intent &#61; new Intent(getActivity(),NewsDisplayActivity.class);intent.putExtra("news_url",news.getNewsUrl());startActivity(intent);}});}}};return true;}&#64;Overridepublic boolean onQueryTextChange(String newText) {return false;}});handler &#61; new Handler(){&#64;Overridepublic void handleMessage(Message msg) {if(msg.what &#61;&#61; 1){adapter &#61; new NewsAdapter(getActivity(),newsList);lv.setAdapter(adapter);lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {&#64;Overridepublic void onItemClick(AdapterView> parent, View view, int position, long id) {News news &#61; newsList.get(position);Intent intent &#61; new Intent(getActivity(),NewsDisplayActivity.class);intent.putExtra("news_url",news.getNewsUrl());startActivity(intent);}});}}};return main;}private void getNews(){new Thread(new Runnable() {&#64;Overridepublic void run() {try{for(int i &#61; 0;i<&#61;20;i&#43;&#43;) {Document doc&#61; Jsoup.connect("http://news.baidu.com/ns?word&#61;物联网&pn&#61;"&#43;Integer.toString(i)&#43;"0&cl&#61;2&ct&#61;0&tn&#61;news&rn&#61;20&ie&#61;utf-8&bt&#61;0&et&#61;0").get();Elements titleLinks&#61;doc.getElementsByClass("c-title");Elements timeLinks&#61;doc.getElementsByClass("c-author");for(int j&#61;0;j