Android-用Handler进行网络并且用PulltoRefresh展示

先在.xml中进行布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <TextView
        android:id="@+id/biaoti1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="24dp"
        android:background="#ff0"
        android:text="首页" />

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/plv"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </com.handmark.pulltorefresh.library.PullToRefreshListView>

</LinearLayout>

.java文件中
public class Fragment1 extends Fragment {

 public String dtString="http://api.tianapi.com/meinv/?key=9b20cd8692e907092e36bf4fe230afb6&num=30";
    ArrayList<JsonBean.NewslistBean> list = new ArrayList<>();
    private ListView lv;
    private PullToRefreshListView plv;
    int page;

    //handler
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage( msg );
            if (msg.what == 0) {
                String json =(String) msg.obj;//json使我们要解析的json串

                //解析数据--json
                Gson gson = new Gson();
                JsonBean bean = gson.fromJson( json, JsonBean.class );
                //转变集合
                list.addAll( bean.getNewslist() );
                //给lv设置适配器
                LvAdapter lvAdapter = new LvAdapter( list, getActivity() );
                plv.setAdapter( lvAdapter );
                //刷新头和刷新尾自动关闭
                plv.onRefreshComplete();
            }
        }
    };

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

        //查找控件-lv
        plv = (PullToRefreshListView)view.findViewById( R.id.plv );
        //给plv设置可以上下拉刷新
        plv.setMode( PullToRefreshBase.Mode.BOTH );
        //给plv设置监听
        plv.setOnRefreshListener( new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //下拉刷新
                list.clear();
                getData( 0 );
                page=0;
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //上拉加载更多
                page++;
                getData( page );
            }
        } );
        //handler请求网络数据--先开启一个子线程
        getData(0);

        return view;
    }

    //handler请求网络数据  的方法
    private void getData(final int page){
        new Thread(  ){
            @Override
            public void run() {
                super.run();
                //调用工具类
                String json = NetWorks.getJson( dtString+page);
                Message message = handler.obtainMessage();
                message.obj=json;
                message.what=0;
                //向handler发送消息
                handler.sendMessage( message );
            }
        }.start();//子线程
    }handler请求网络数据  的方法

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值