HorizontalScrollView+ViewPager导航栏

本文介绍了如何在Android应用中使用HorizontalScrollView与ViewPager结合创建导航栏。通过在Fragment中获取传递的数据,并利用AsyncTask进行后台数据加载,然后用Gson解析JSON数据,将数据展示在ListView中。

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


//主页面

package fragment;



import android.graphics.Color;
import android.os.Bundle;
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 android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;


import com.example.lx123000.R;


import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;


import fage.MyFragment;
import fage.MyFragment01;
import fage.MyFragment02;


/**
 * Created by Administrator on 2017/12/30/030.
 */


public class Fragment02 extends Fragment implements View.OnClickListener{


    String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    private ViewPager vp;
    private LinearLayout ll;
    private HorizontalScrollView hs;
    private String[] strings;
    private List<TextView> al;
    private ArrayList<Fragment> fragments = new ArrayList<>();
    private MyFragment01 fragment01;
    private MyFragment02 fragment02;


    @Nullable
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment02, container, false);
        vp = view.findViewById(R.id.vp);
        ll = view.findViewById(R.id.ll);
        hs = view.findViewById(R.id.hsv);
        strings = new String[]{"头条", "娱乐", "科技", "信息", "八卦", "北京", "上海", "天津",
                "重庆", "大大燕网"};
        init();
        for (int i = 0; i < 2; i++) {
            MyFragment myFragment = new MyFragment();
            //传值
            Bundle bundle = new Bundle();
            bundle.putString("title",path+(i+1));
            myFragment.setArguments(bundle);
            fragments.add(myFragment);
        }
        fragment01 = new MyFragment01();
        fragment02 = new MyFragment02();
        fragments.add(fragment01);
        fragments.add(fragment02);






        vp.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return fragments.get(position);
            }


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


        return view;
    }


    private void into() {
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {


            }


            @Override
            public void onPageSelected(int position) {
                for (int i = 0; i < fragments.size(); i++) {
                    if (i == position) {
                        al.get(i).setTextColor(Color.RED);
                    }else{
                        al.get(i).setTextColor(Color.BLACK);
                    }
                }
//                int width = al.get(0).getWidth();
//                hs.scrollTo((width+20)*position,0);
            }


            @Override
            public void onPageScrollStateChanged(int state) {


            }
        });
    }


    private void init() {
        al = new ArrayList<>();
        for (int i = 0; i < strings.length; i++) {
            TextView tv = new TextView(getActivity());
            tv.setText(strings[i]);
            tv.setTextSize(24);
            if (i== 0) {
                tv.setTextColor(Color.RED);
            }
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(10,10,10,20);
            tv.setId(i);
            tv.setOnClickListener(this);
            al.add(tv);
            ll.addView(tv,layoutParams);
        }
    }


    @Override
    public void onClick(View view) {
        int id = view.getId();
        vp.setCurrentItem(id);
    }

}

//接受数据页面

package fage;


import android.annotation.SuppressLint;
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 android.widget.TextView;


import com.example.lx123000.R;
import com.google.gson.Gson;


import java.util.List;


import adapter.MyAdapter;
import bean.SuperClass;
import url.GetURL;


/**
 * Created by Administrator on 2018/1/3/003.
 */


public class MyFragment extends Fragment {


    String path;
    private ListView lv;
    private TextView tv;
    private List<SuperClass.DataBean> list;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.myfragment_item, container, false);


        Bundle bundle = getArguments();
        lv = view.findViewById(R.id.lv);
        tv = view.findViewById(R.id.tv);
        path=bundle.getString("title");
        new AsyncTask<String, String, String>() {
            @Override
            protected String doInBackground(String... strings) {
                String data = GetURL.getData(path);
                return data;
            }


            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                SuperClass superClass = gson.fromJson(s, SuperClass.class);
                list = superClass.getData();
                lv.setAdapter(new MyAdapter(list,getActivity()));
            }
        }.execute();
        return view;
    }
}

//接受页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"/>
<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/lv"></ListView>
</LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值