只贴出了一部分代码,稍微解释一下,即在类中的onCreateView函数中开了一个线程,用来访问网络爬数据,然后生成了5个list,现在想要在getDateFromURL方法中使用这几个list,如何实现?
尝试了使用handler给全局变量赋值,但是getDateFromURL方法中的list都为空,
本人菜鸟,刚学一个月,很多东西都是跌跌撞撞摸索的,求大神指点啊。这地方卡了好久了。目前能想到的思路就两个:1,通过全局变量过度;2,通过数据库来过渡。第二个还没尝试,不知道是否可行。
public class DeckviewFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mDefaultThumbnail = BitmapFactory.decodeResource(getResources(),
R.drawable.default_thumbnail);
mDefaultHeaderIcon = getResources().getDrawable(R.drawable.banana);
view1 = inflater.inflate(R.layout.deckview, container, false);
mDeckView = (DeckView) view1.findViewById(R.id.deckview);
count = (TextView) mDeckView.findViewById(R.id.count_num);
comment = (TextView) mDeckView.findViewById(R.id.comment_num);
new Thread(networkTask).start();
........
}
Runnable networkTask=new Runnable() {
@Override
public void run() {
try {
StringBuffer buffer=new StringBuffer();
ArrayList<String> mcountlist=new ArrayList<String>();
ArrayList<String> mcomlist=new ArrayList<String>();
ArrayList<String> mtitlelist=new ArrayList<String >();
ArrayList<String> mpiclist=new ArrayList<String>();
ArrayList<String> mhreflist=new ArrayList<String >();
Document doc = Jsoup.connect("http://www.-------").get();
Elements elements = doc.getElementsByClass("mainer");
for (Element e:elements){
Elements counts=e.getElementsByClass("title");//
if(counts.size()!=3){
for (Element count : counts) {
buffer.append(count.toString());
mhreflist.add(count.attr("href"));
}
}
Elements pics =e.getElementsByClass("preview");
for(Element pic:pics){
mpiclist.add(pic.attr("src"));
}
}
Pattern p1=Pattern.compile("点击数\\:\\s(.*?)\\s\\/");
Matcher m1=p1.matcher(buffer);
while (m1.find()){
mcountlist.add(m1.group(1));//group(1)去掉了:和/
}
Pattern p2=Pattern.compile("评论数\\:\\s(.*?)\"");
Matcher m2=p2.matcher(buffer);
while (m2.find()){
mcomlist.add(m2.group(1));
}
Pattern p3=Pattern.compile("标题\\:\\s(.*?)\\r");
Matcher m3=p3.matcher(buffer);
while (m3.find()){
mtitlelist.add(m3.group(1));
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
void getDateFromURL(Integer num,Integer key) {
if (mEntries == null) {
mEntries = new ArrayList<>();
for (int i=0; i < num; i++) {
Datum datum = new Datum();
datum.count_num=mcountlist.get(i);
datum.comment_num=mcomlist.get(i);
datum.headerTitle =mtitlelist.get(i);
datum.link =mpiclist.get(i);
mEntries.add(datum);
}
}
}