Android_XListView请求网络数据

本文介绍了一个名为Fragment2的类实现,该类继承自Fragment并实现了XListView的IXListViewListener接口。文章详细展示了如何通过异步任务获取和显示网络数据,包括列表适配器的自定义、数据解析以及列表视图的刷新机制。

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

/**
 * Created by 壹颗大金星 on 2017/9/7.
 */
public class Fragment2 extends Fragment implements XListView.IXListViewListener{

    Handler handler = new Handler();
    private View view;
    private XListView myxlistview;
    private List<List_bean> list = new ArrayList<List_bean>();
    private Myadapter myadapter;
    private List<Bean.NewslistBean> newslist;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment2, container, false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        myxlistview = (XListView)view.findViewById(R.id.myxlistview);
        myxlistview.setPullLoadEnable(true);// 设置让它上拉,FALSE为不让上拉,便不加载更多数据

        new MyAsynctask().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");

        myxlistview.setXListViewListener(this);

    }

    class MyAsynctask extends AsyncTask<String,Void,String> {

        private StringBuilder builder;

        @Override
        protected String doInBackground(String... strings) {
            try {
                //获取url
                URL url = new URL(strings[0]);
                //请求网络
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                int code = urlConnection.getResponseCode();
                //判断是否返回成功
                if(code==200){
                    //获取网络信息
                    InputStream inputStream = urlConnection.getInputStream();
                    BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));
                    builder = new StringBuilder();
                    String s = "";
                    //拼接
                    while((s=bf.readLine())!=null){
                        builder.append(s);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return builder.toString();
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //Log.w("TAG", "onPostExecute: "+s );
            //解析
            Gson gson = new Gson();
            Bean bean = gson.fromJson(s, Bean.class);
            newslist = bean.getNewslist();
            //存入集合
            for (int i = 0; i< newslist.size(); i++){
                list.add(new List_bean(newslist.get(i).getCtime(), newslist.get(i).getTitle(), newslist.get(i).getPicUrl(), newslist.get(i).getUrl()));
            }
            myadapter = new Myadapter();
            myxlistview.setAdapter(myadapter);
            myxlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String url = list.get(position).getUrl();
                    Intent intent = new Intent(getActivity(),Main2Activity.class);
                    intent.putExtra("url",url);
                    startActivity(intent);
                }
            });
        }
    }

    class Myadapter extends BaseAdapter {

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return list.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        class ViewHowder{
            ImageView img;
            TextView tv1;
            TextView tv2;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            //获取数据
            List_bean list_bean = list.get(i);
            ViewHowder howder = new ViewHowder();
            if(view==null){
                //创建试图
                view = View.inflate(getActivity(),R.layout.list,null);
                howder.img = (ImageView)view.findViewById(R.id.imageView);
                howder.tv1 = (TextView) view.findViewById(R.id.textView);
                howder.tv2 = (TextView)view.findViewById(R.id.textView2);
                view.setTag(howder);
            }else{
                howder = (ViewHowder) view.getTag();
            }
            howder.tv1.setText(list_bean.getTitle());
            howder.tv2.setText(list_bean.getCtime());
            ImageLoader.getInstance().displayImage(list_bean.getPicUrl(),howder.img);
            return view;
        }
    }


    @Override
    public void onRefresh() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //清空集合
                list.clear();
                //重新请求数据
                new MyAsynctask().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");
                completeRefresh();
            }
        },2000);

    }

    @Override
    public void onLoadMore() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //添加数据
                for (int i = 0; i< newslist.size(); i++){
                    list.add(new List_bean(newslist.get(i).getCtime(), newslist.get(i).getTitle(), newslist.get(i).getPicUrl(), newslist.get(i).getUrl()));
                }
                //刷新输配器
                myadapter.notifyDataSetChanged();
                completeRefresh();
            }
        },2000);
    }

    public void completeRefresh(){
        myxlistview.stopRefresh();
        myxlistview.stopLoadMore();
        myxlistview.setRefreshTime("刚刚");
    }

}

一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值