TabLayout && ViewPager _动态添加Fragnent

本文介绍了一个使用Android平台加载头条新闻的Fragment组件实现方法,通过AsyncTask进行后台数据加载,并使用Gson解析从网络获取的JSON数据,最终将数据展示在ListView中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.toutiao;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

/**
 * Created by 霍长生 on 2017/9/13 0013.
 */

public class NewsFragment extends Fragment {

    private ListView dan;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.list_view, container, false);
        dan = view.findViewById(R.id.dan);

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //获取传递的信息
        Bundle arguments = getArguments();
        //默认是top在切换的时候会将其原先的name替换
        String string = arguments.getString("name", "top");
        //调用请求数据的方法
        getDataFromNet(string);
    }
        //调用请求网络的数据
        private void getDataFromNet(final String string) {
            AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
                @Override
                protected String doInBackground(Void... voids) {

                    String path = "http://v.juhe.cn/toutiao/index?type="+string+"&key=597b4f9dcb50e051fd725a9ec54d6653";
                    try {
                        URL url = new URL(path);

                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        //设置
                        connection.setRequestMethod("GET");
                        connection.setReadTimeout(5000);
                        connection.setConnectTimeout(5000);

                        //获取
                        int responseCode = connection.getResponseCode();
                        if (responseCode == 200){
                            InputStream inputStream = connection.getInputStream();

                            String json = streamToString(inputStream,"utf-8");

                            return json;
                        }

                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    return "";
                }

                @Override
                protected void onPostExecute(String json) {
                    Gson gson = new Gson();

                    DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);

                    List<DataDataBean.ResultBean.DataBean> list = dataDataBean.getResult().getData();

                    MyAdapter myAdapter = new MyAdapter(getActivity(), list);

                    dan.setAdapter(myAdapter);

                }
            };

            asyncTask.execute();

        }

        private String streamToString(InputStream inputStream,String charset) {
            try {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream, charset);

                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String s = null;
                StringBuilder builder = new StringBuilder();
                while ((s = bufferedReader.readLine()) != null) {
                    builder.append(s);
                }

                bufferedReader.close();
                return builder.toString();

            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值