qq_27278679 2016-05-02 06:17 采纳率: 0%
浏览 1477

Android中用线程访问网络之后得到的数据怎么在其他函数(非UI)中使用?

只贴出了一部分代码,稍微解释一下,即在类中的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);
            }
        }
                }
  • 写回答

3条回答

  • bdmh 移动开发领域优质创作者 2016-05-02 06:36
    关注

    异步中的数据可以通过handler传递给ui线程处理

    评论

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿