轮播与fragment联动

来源:互联网 发布:kingroot是什么软件 编辑:程序博客网 时间:2024/06/05 00:31

主布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/main_rg"></android.support.v4.view.ViewPager>

    <RadioGroup
        android:id="@+id/main_rg"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_height="50dp"
        >

        <RadioButton
            android:id="@+id/rb1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:text="主页"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/select_back"
            android:checked="true"/>

        <RadioButton
            android:id="@+id/rb2"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:text="主页2"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/select_back"/>

        <RadioButton
            android:id="@+id/rb3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:text="主页3"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/select_back"/>

        <RadioButton
            android:id="@+id/rb4"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:text="主页4"
            android:button="@null"
            android:gravity="center"
            android:background="@drawable/select_back"/>
    </RadioGroup>

</RelativeLayout>

======================================================

======================================================

Fragment布局:

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <android.support.v4.view.ViewPager
            android:id="@+id/frag_pager"
            android:layout_width="match_parent"
            android:layout_height="200dp"></android.support.v4.view.ViewPager>


        <com.bwie.d.yuekaolianxi5.Xlist.XListView
            android:id="@+id/xlist_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></com.bwie.d.yuekaolianxi5.Xlist.XListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linear"
        android:layout_width="wrap_content"
        android:orientation="horizontal"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="190dp"
        android:layout_height="wrap_content"></LinearLayout>

</RelativeLayout>

======================================================

======================================================

主Activity:

public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private RadioGroup radioGroup;
    private List<Fragment> list;

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

        viewPager = (ViewPager) findViewById(R.id.view_pager);
        radioGroup = (RadioGroup) findViewById(R.id.main_rg);


        list = new ArrayList<>();
        list.add(new Fragment1());
        list.add(new Fragment2());
        list.add(new Fragment3());
        list.add(new Fragment4());

        MainPagerAdapter adapter = new MainPagerAdapter(getSupportFragmentManager(), list);
        viewPager.setAdapter(adapter);
        viewPager.setOffscreenPageLimit(list.size());

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                radioGroup.check(radioGroup.getChildAt(position).getId());
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });



        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i)
                {
                    case R.id.rb1:
                        viewPager.setCurrentItem(0,false);
                    break;

                    case R.id.rb2:
                        viewPager.setCurrentItem(1,false);
                        break;

                    case R.id.rb3:
                        viewPager.setCurrentItem(2,false);
                        break;

                    case R.id.rb4:
                        viewPager.setCurrentItem(3,false);
                        break;
                }
            }
        });


    }
}
========================================================

========================================================

到MainPagerAdapter页面:

public class MainPagerAdapter extends FragmentPagerAdapter{
    List<Fragment> list;
    public MainPagerAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list = list;
    }

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

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

===========================================================

===========================================================

Fragment1页面:

public class Fragment1 extends Fragment{

    private ViewPager viewPager;
    private XListView xListView;
    List<NetDataBean.DataBean.ComicsBean> list = new ArrayList<>();
    private FragXlistAdapter xlistAdapter;
    private List<String> list1;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if(msg.what==0)
            {
                int currentItem = viewPager.getCurrentItem();
                viewPager.setCurrentItem(currentItem+1);
                handler.sendEmptyMessageDelayed(0,2000);
            }
        }
    };
    private List<ImageView> images;
    private LinearLayout linearLayout;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       View view = inflater.inflate(R.layout.fragment1_layout,container,false);
        viewPager = (ViewPager) view.findViewById(R.id.frag_pager);
        xListView = (XListView) view.findViewById(R.id.xlist_view);
        linearLayout = (LinearLayout) view.findViewById(R.id.linear);
        return view;
    }

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

        xListView.setPullRefreshEnable(true);
        xListView.setPullLoadEnable(true);

        list1 = new ArrayList<>();
        list1.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151721118&di=649c9a43aed72fbc4d99ec1a031510c6&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F015c7d574b9f8f6ac72525aee98351.jpg\n");
        list1.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151956771&di=0eb6f306991d24b67a13ceb336f80102&imgtype=0&src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F00613def3f1beb7a35ae136341be2b589bc46a2d.jpg_320x200.jpg");
        list1.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151847685&di=c7a4b5d08ec43fa629bcb690039a7629&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_080625%2F20080625_2e91a10c444877e88827vri2ZKdGMvQo.jpg");
        list1.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151825129&di=70bf74b87d8a15cb91a2d79f15ed0eaf&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_081016%2F20081016_fee215664d5740e56c13E2YB8giERFEX.jpg");
        list1.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505746504&di=930c4d677a02328a142d6fa85ed14580&imgtype=jpg&er=1&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_090113%2F20090113_6ac58b42bea94f0b318e1B6BZb5lPZl5.jpg");

        getinit();
        MyPagerAdapter adapter = new MyPagerAdapter(getActivity(), list1);
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(10000*list1.size());
        handler.sendEmptyMessageDelayed(0,2000);

        viewPager.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<list1.size();i++)
                {
                    if(i==position%list1.size())
                    {
                        images.get(i).setImageResource(R.drawable.shape_on);
                    }
                    else
                    {
                        images.get(i).setImageResource(R.drawable.shape_no);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        xListView.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                getredatafromnet();
            }

            @Override
            public void onLoadMore() {
                getdatafromnet();
            }
        });

        getdatafromnet();
    }

    private void getinit() {
        images = new ArrayList<>();
        linearLayout.removeAllViews();
        for(int i=0; i <list1.size();i++)
        {
            ImageView imageView = new ImageView(getActivity());
            if(i==0)
            {
                imageView.setImageResource(R.drawable.shape_on);
            }
            else
            {
                imageView.setImageResource(R.drawable.shape_no);
            }
            images.add(imageView);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            params.setMargins(5,0,5,0);
            linearLayout.addView(imageView,params);
        }
    }
    public void getredatafromnet() {
        AsyncTask<String,Integer,String> asyncTask = new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                String path ="http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9";
                try {
                    URL url = new URL(path);
                    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.setReadTimeout(5000);
                    httpURLConnection.setConnectTimeout(5000);
                    int responseCode = httpURLConnection.getResponseCode();
                    if(responseCode==200)
                    {
                        InputStream inputStream = httpURLConnection.getInputStream();
                        String json = Streamtostring(inputStream,"utf-8");
                        Log.i("---------------",json);
                        return json;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return "";
            }

            @Override
            protected void onPostExecute(String s) {
                Gson gson = new Gson();
                NetDataBean netDataBean = gson.fromJson(s, NetDataBean.class);
                list.addAll(0,netDataBean.getData().getComics());

                getmyAdapter();
                xListView.stopRefresh();
                xListView.setRefreshTime("刚刚");

            }
        };
        asyncTask.execute();
    }


    public void getdatafromnet() {
        AsyncTask<String,Integer,String> asyncTask = new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                String path ="http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9";
                try {
                    URL url = new URL(path);
                    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.setReadTimeout(5000);
                    httpURLConnection.setConnectTimeout(5000);
                    int responseCode = httpURLConnection.getResponseCode();
                    if(responseCode==200)
                    {
                        InputStream inputStream = httpURLConnection.getInputStream();
                        String json = Streamtostring(inputStream,"utf-8");
                        Log.i("---------------",json);
                        return json;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return "";
            }

            @Override
            protected void onPostExecute(String s) {
                Gson gson = new Gson();
                NetDataBean netDataBean = gson.fromJson(s, NetDataBean.class);
                list.addAll(netDataBean.getData().getComics());

                getmyAdapter();
                xListView.stopLoadMore();

            }
        };
        asyncTask.execute();
    }

    private void getmyAdapter() {
        if(xlistAdapter==null)
        {
            xlistAdapter = new FragXlistAdapter(getActivity(), list);
            xListView.setAdapter(xlistAdapter);
        }
        else
        {
            xlistAdapter.notifyDataSetChanged();
        }
    }

    private String Streamtostring(InputStream inputStream, String s) {
        try {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,s);

            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String string = null;
            StringBuilder builder = new StringBuilder();
            while((string=bufferedReader.readLine())!=null)
            {
                builder.append(string);
            }
            Log.i("11111111111111111",builder.toString());
            bufferedReader.close();
            return builder.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

======================================================================

======================================================================

XlistAdapter页面:

public class FragXlistAdapter extends BaseAdapter{
    Context context;
    List<NetDataBean.DataBean.ComicsBean> list;
    private final int num1 = 0;
    private final int num2 = 1;
    public FragXlistAdapter(Context context, List<NetDataBean.DataBean.ComicsBean> list) {
        this.list = list;
        this.context = context;
    }

    @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;
    }


    @Override
    public int getItemViewType(int position) {
        if(position%2==num1)
        {
            return num1;
        }
        return num2;
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if(getItemViewType(i)==num1)
        {
            ViewHolderon holderon;
            if(view==null)
            {
                view = View.inflate(context, R.layout.xlistimage_layout,null);
                holderon = new ViewHolderon();
                holderon.imageView = (ImageView) view.findViewById(R.id.xliston_image);
                holderon.textView = (TextView) view.findViewById(R.id.xliston_text);
                view.setTag(holderon);
            }
            else
            {
                holderon = (ViewHolderon) view.getTag();
            }
            holderon.textView.setText(list.get(i).getTitle());
            ImageLoader.getInstance().displayImage(list.get(i).getCover_image_url(),holderon.imageView, NetImageloder.getCircleOption());
        }
        else
        {
            ViewHolderno holderno;
            if(view==null)
            {
                view = View.inflate(context,R.layout.xlist_layout,null);
                holderno = new ViewHolderno();
                holderno.textView = (TextView) view.findViewById(R.id.xlistno_text);
                view.setTag(holderno);
            }
            else
            {
                holderno = (ViewHolderno) view.getTag();
            }
            holderno.textView.setText(list.get(i).getTitle());
        }
        return view;
    }

    class ViewHolderon{
        ImageView imageView;
        TextView textView;
    }

    class ViewHolderno{
        TextView textView;
    }
}

====================================

需要ImageLoaUtils-----------------------

原创粉丝点击