Tablayout 加 ViewPager 联动效果

public class MainActivity extends AppCompatActivity {

    private ViewPager vp;
    private List<String> tabtitle;
    private List<String> url;
    private List<Fragment> list;
    private TabLayout tab;
    private ImageView pindao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
        
    }

    private void initData() {
        tabtitle = new ArrayList<String>();
        tabtitle.add("推荐");
        tabtitle.add("最新");
        tabtitle.add("生活");
        tabtitle.add("娱乐 ");
        tabtitle.add("文化");
        tabtitle.add("感情");
        tabtitle.add("知识");
        tabtitle.add("感情");
        tabtitle.add("社会");
        tabtitle.add("军事");
        url = Arrays.asList(
                "http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1455521444&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=news_hot&count=20&min_behot_time=1455521166&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_nme=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=news_local&count=20&min_behot_time=1455521226&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&user_city=北京&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=video&count=20&min_behot_time=1455521349&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522107&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=news_society&count=20&min_behot_time=1455521720&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522107&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=news_entertainment&count=20&min_behot_time=1455522338&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&min_behot_time=1455522427&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=news_car&count=20&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
                "http://ic.snssdk.com/2/article/v25/stream/?category=image_ppmm&count=20&min_behot_time=1455524172&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455524092&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000"
                ,"http://ic.snssdk.com/2/article/v25/stream/?category=news_health&count=20&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455524092&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000");


        list = new ArrayList<Fragment>();
        for (int i=0 ;i <tabtitle.size() ;i++){
            NewsFragment newsFragment = new NewsFragment();
            Bundle bundle = new Bundle();
            bundle.putString("url", url.get(i));
            newsFragment.setArguments(bundle);
            list.add(newsFragment);
        }
        Myvp myvp = new Myvp(getSupportFragmentManager());
        vp.setAdapter(myvp);
        vp.setOffscreenPageLimit(tabtitle.size());
        tab.setupWithViewPager(vp);
        //标签的格式
        tab.setTabMode(TabLayout.MODE_SCROLLABLE);


        pindao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, PingDao.class);
                startActivity(intent);
            }
        });
    }

    private void initView() {
        tab = (TabLayout) findViewById(R.id.tab);
        vp = (ViewPager) findViewById(R.id.vp);
        pindao = (ImageView) findViewById(R.id.pingdao);
    }

    class Myvp extends FragmentPagerAdapter{

        public Myvp(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return list.get(position);
        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            return tabtitle.get(position);
        }
    }
}

Xutils 的初始化化

 

package com.example.apkupdatademo;

import android.app.Application;

import org.xutils.x;

/**
 * Created by yfeng on 2017/9/16.
 */

public class MyApp extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
        x.Ext.setDebug(true);
    }
}

 

 

 

 

 

 

在Fragment的界面做网络请求数据和做的适配

/**
 * 2017/9/16.
 * 作用:
 */

public class NewsFragment extends Fragment implements XListView.IXListViewListener {

    private String dataurl;
    private View view;
    private XListView xlv;
    private Myadapter myadapter;
    private  boolean flag;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(getArguments()!=null){
            dataurl = getArguments().getString("url");
        }
    }


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.newsfragment, null);
        xlv = (XListView) view.findViewById(R.id.xlistview);
        xlv.setPullLoadEnable(true);
        xlv.setXListViewListener(this);
        getData();
        return view;
    }

    public void getData() {
//        getNextData(dataurl);
        getnextData(dataurl);
    }
//写了两种网络请求,任选其一
    private void getnextData(String dataurl) {
            new AsyncTask<String, Void, String>() {
                @Override
                protected void onPostExecute(String s) {
                    super.onPostExecute(s);
                    if(s==null){
                        return;
                    }
                    Gson gson = new Gson();
                    Bean bean = gson.fromJson(s, Bean.class);
                    final List<Bean.DataBean> list = bean.getData();

                    if(myadapter==null){
                        myadapter = new Myadapter(getActivity(), list);
                        xlv.setAdapter(myadapter);
                    }else {
                        myadapter.Loadmeoth(list, flag);
                        xlv.setAdapter(myadapter);
                    }
                }

                @Override
                protected String doInBackground(String... params) {
                    try {
                        URL url = new URL(params[0]);
                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("GET");
                        connection.setReadTimeout(5000);
                        connection.setConnectTimeout(5000);
                        int code = connection.getResponseCode();
                        if(code ==200){
                            InputStream is = connection.getInputStream();
                            return SramTools.GetRead(is);
                        }

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return null;
                }
            }.execute(dataurl);
    }

//Xutils的Get请求
    private void getNextData(String url) {
        RequestParams params = new RequestParams(url);
        x.http().get(params, new Callback.CommonCallback<String>() {
            private Myadapter myadapter;

            @Override
            public void onSuccess(String result) {

                Gson gson = new Gson();
                Bean bean = gson.fromJson(result, Bean.class);
                List<Bean.DataBean> list = bean.getData();
                myadapter = new Myadapter(getActivity(),list);
                xlv.setAdapter(myadapter);

            }
            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }



    @Override
    public void onRefresh() {
        getData();
        xlv.stopRefresh();
        flag = true;

    }

    @Override
    public void onLoadMore() {
        getData();
        xlv.stopLoadMore();
        flag = false;
    }
}

 

做适配的的方法和多条目

 

public class Myadapter extends BaseAdapter {
    Context context;
    List<Bean.DataBean> list;
    private final DisplayImageOptions options;
    public Myadapter(Context context, List<Bean.DataBean> list) {
        this.context = context;
        this.list= list;

        options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .showImageForEmptyUri(R.mipmap.ic_empty)
                .showImageOnFail(R.mipmap.ic_error)
                .showImageOnLoading(R.mipmap.loading)
                .build();
    }

    public   void Loadmeoth(List<Bean.DataBean> datas,boolean flag){
        for (int i= datas.size()-1 ;i> -1;i--){
            if (flag){
                list.add(0,datas.get(i));
            }else{
                list.add(datas.get(i));
            }
        }
        notifyDataSetChanged();

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

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

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

    @Override
    public int getViewTypeCount() {
        return 4;
    }

    @Override
    public int getItemViewType(int position) {
        if(list.get(position).getVideo_detail_info()==null){
            if(list.get(position).getImage_list()==null){
                return 0;   //没有图片
            }else if (list.get(position).getImage_list().size() == 3){
                return 1; //三张图片
            }else {
                return 2; // 一张图片
            }
        }else{
            return 3; //视频
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Viewholder viewholder = null;
        int type = getItemViewType(position);
        if(convertView == null) {
            viewholder = new Viewholder();
            switch (type) {
                case 0:
                    convertView = View.inflate(context, R.layout.fragment_one, null);
                    viewholder.title = (TextView) convertView.findViewById(R.id.title);
                    viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
                    break;
                case 1:
                    convertView = View.inflate(context, R.layout.fragment_three, null);
                    viewholder.title = (TextView) convertView.findViewById(R.id.title);
                    viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
                    viewholder.image1 = (ImageView) convertView.findViewById(R.id.image1);
                    viewholder.image2 = (ImageView) convertView.findViewById(R.id.image2);
                    viewholder.image3 = (ImageView) convertView.findViewById(R.id.image3);

                    break;

                case 2:
                    convertView = View.inflate(context, R.layout.fragment_two, null);
                    viewholder.title = (TextView) convertView.findViewById(R.id.title);
                    viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
                    viewholder.image1 = (ImageView) convertView.findViewById(R.id.image1);
                    break;

                case 3:
                    convertView = View.inflate(context, R.layout.fragment_fout, null);
                    viewholder.title = (TextView) convertView.findViewById(R.id.title);
                    viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
                    viewholder.viod = (ImageView) convertView.findViewById(R.id.viod);
                    break;
            }
            convertView.setTag(viewholder);
        }else {
            viewholder = (Viewholder) convertView.getTag();
        }

        switch (type){
            case 0:
                viewholder.title.setText(list.get(position).getTitle());
                viewholder.connect.setText(list.get(position).getSource()+"   评论:"+list.get(position).getComment_count());

                break;
            case  1:

                viewholder.title.setText(list.get(position).getTitle());
                viewholder.connect.setText(list.get(position).getSource()+"   评论:"+list.get(position).getComment_count());
                ImageLoader.getInstance().displayImage(list.get(position).getImage_list().get(0).getUrl(),viewholder.image1,options);
                ImageLoader.getInstance().displayImage(list.get(position).getImage_list().get(1).getUrl(),viewholder.image2,options);
                ImageLoader.getInstance().displayImage(list.get(position).getImage_list().get(2).getUrl(),viewholder.image3,options);

                break;

            case 2:
                viewholder.title.setText(list.get(position).getTitle());
                viewholder.connect.setText(list.get(position).getSource()+"   评论:"+list.get(position).getComment_count());
                ImageLoader.getInstance().displayImage(list.get(position).getMiddle_image().getUrl(),viewholder.image1,options);
                break;

            case 3:
                viewholder.title.setText(list.get(position).getTitle());
                viewholder.connect.setText(list.get(position).getSource()+"   评论:"+list.get(position).getComment_count());
                ImageLoader.getInstance().displayImage(list.get(position).getVideo_detail_info().getDetail_video_large_image().getUrl(),viewholder.viod,options);
                break;
        }


        return convertView;
    }
    class Viewholder{
        TextView title;
        TextView connect;
        ImageView image1 ,image2,image3 ,viod;
    }

}

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值