tablelayout个页面展示不同信息(Xlistview)上拉刷新 下拉加载

一定记得加权限!!!!!!!!!!



//解析tablelayout标题内容并传递id

package com.example.dell.zk3_lx;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

import com.google.common.io.CharStreams;
import com.google.gson.Gson;

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

import bean.Title;
import fragment.DemoFragment;

public class MainActivity extends AppCompatActivity {

    private TabLayout tabLayout;
    private ViewPager vp;
    private ArrayList<Fragment> fragments = new ArrayList<Fragment>(  );
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        tabLayout = (TabLayout) findViewById( R.id.tabLayout );
        vp = (ViewPager) findViewById( R.id.viewpager );

        getData();

        myAdapter = new MyAdapter( getSupportFragmentManager() );
        vp.setAdapter( myAdapter );
        tabLayout.setupWithViewPager(vp);
        tabLayout.setTabMode( 0 );
    }

//解析数据
    private void getData() {
        new Thread() {
            @Override
            public void run() {
                super.run();
                try {
                    URL url = new URL( "https://code.aliyun.com/598254259/FristProject/raw/master/news_xl.txt" );
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod( "GET" );
                    connection.setConnectTimeout( 5000 );
                    connection.connect();
                    int code = connection.getResponseCode();
                    if (code == HttpURLConnection.HTTP_OK) {

                        InputStream inputStream = connection.getInputStream();
                        String data = CharStreams.toString( new InputStreamReader( inputStream, "UTF-8" ) );
                        Message message = new Message();
                        message.obj = data;
                        handler.sendMessage( message );

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

    private List<Title.ItemsBean> beanItems=new ArrayList<>(  );
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler(  ){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage( msg );
            String data = (String) msg.obj;
            Gson gson = new Gson();
            Title bean = gson.fromJson( data, Title.class );
            beanItems=bean.getItems();
            for (int a=0;a<beanItems.size();a++){
                fragments.add( new DemoFragment() );
            }

            myAdapter.notifyDataSetChanged();
        }
    };

    private class MyAdapter extends FragmentPagerAdapter{
        public MyAdapter(FragmentManager fm) {
            super( fm );
        }

        @Override
        public Fragment getItem(int position) {
            Fragment fragment= fragments.get( position );
            Bundle bundle=new Bundle(  );
            bundle.putString( "lid", beanItems.get( position ).getId());
            fragment.setArguments( bundle );
            return fragment;
        }

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

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return beanItems.get( position ).getName();
        }
    }
}


//tablelayout解析标题传递id加载fragment
//动态创建fragment通过id让每个fragment加载不同内容
package fragment;


import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;

import com.example.dell.zk3_lx.News;
import com.example.dell.zk3_lx.R;
import com.example.xlistviewlib.XListView;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;

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

import adapter.MyAdapter_item;
import bean.NewsEntity;

public class DemoFragment extends Fragment {

    private XListView lv;
    private static final String TAG = "AAA";

    private List<NewsEntity.ResultBean.DataBean> list=new ArrayList<NewsEntity.ResultBean.DataBean>(  );
    private MyAdapter_item myAdapter_item;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = View.inflate( getActivity(), R.layout.fragment_demo, null );
        lv = (XListView) view.findViewById( R.id.listview );
        myAdapter_item = new MyAdapter_item(getActivity(),list);
        lv.setAdapter( myAdapter_item );
        lv.setOnItemClickListener( new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String url = list.get( position ).getWapurl();
                Intent intent = new Intent(getActivity(),News.class);
                intent.putExtra("url",url);
                startActivity(intent);
            }
        } );
//listView上拉刷新 下拉加载
        lv.setPullRefreshEnable(true);
        lv.setPullLoadEnable(true);
        lv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                list.clear();
                myAdapter_item.notifyDataSetChanged();
                getData();
                lv.stopRefresh();
            }

            @Override
            public void onLoadMore() {
                lv.stopLoadMore();
            }
        });
        getData();
        return view;
    }
//网络请求
    private void getData() {
       Bundle bundle= getArguments();
       String lid=bundle.getString( "lid" );
//请求的接口
       final String  urlP = "https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid="+lid+"&k=&num=20&page=1";
        new Thread() {
            @Override
            public void run() {
                super.run();
                try {
                    URL url = new URL( urlP );
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod( "GET" );
                    connection.setConnectTimeout( 5000 );
                    connection.connect();
                    int code = connection.getResponseCode();
                    if (code == HttpURLConnection.HTTP_OK) {
                        InputStream inputStream = connection.getInputStream();
                        String data = CharStreams.toString( new InputStreamReader( inputStream, "UTF-8" ) );
                        Message message = new Message();
                        message.obj = data;
                        handler.sendMessage( message );
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler(  ){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage( msg );
            String data = (String) msg.obj;
//解析数据 每个fragment需要填充的数据
            Gson gson = new Gson();
            NewsEntity newsEntity = gson.fromJson( data, NewsEntity.class );
            list = newsEntity.getResult().getData();
            myAdapter_item.notifyDataSetChanged();
            Log.d( TAG, "handleMessage: ++++++++++++++++++++++++++++++++++++"+list );
        }
    };
}



猜你喜欢

转载自blog.csdn.net/qq_42250299/article/details/82728404
今日推荐