RadioButton+Fragment和XlistView及多条目加载

来源:互联网 发布:域名注册是免费么? 编辑:程序博客网 时间:2024/06/03 22:28

布局控件

Activity_main:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.yuekao1.MainActivity">    <android.support.v4.view.ViewPager        android:id="@+id/dvp"        android:layout_width="match_parent"        android:layout_height="620dp">    </android.support.v4.view.ViewPager>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@id/dvp"        android:orientation="horizontal">        <RadioGroup            android:id="@+id/rg"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_below="@id/dvp"            android:orientation="horizontal">            <RadioButton                android:id="@+id/radio1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_margin="30dp"                android:button="@null"                android:gravity="center"                android:text="漫画"                android:textSize="20dp" />            <RadioButton                android:id="@+id/radio2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_margin="30dp"                android:button="@null"                android:gravity="center"                android:text="发现"                android:textSize="20dp" />            <RadioButton                android:id="@+id/radio3"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_margin="30dp"                android:button="@null"                android:gravity="center"                android:text="v社区"                android:textSize="20dp"                tools:layout_editor_absoluteX="199dp"                tools:layout_editor_absoluteY="463dp" />            <RadioButton                android:id="@+id/radio4"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_margin="30dp"                android:button="@null"                android:gravity="center"                android:text="我们"                android:textSize="20dp" />        </RadioGroup>    </LinearLayout></RelativeLayout> 

Fragment1:

<?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">    <com.bawei.wzq.wzlibrary.view.XListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/xlv">    </com.bawei.wzq.wzlibrary.view.XListView></LinearLayout>


item_xlv:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:weightSum="1">    <ImageView        android:id="@+id/imageView"        android:layout_width="100dp"        android:layout_height="100dp"        app:srcCompat="@mipmap/ic_launcher" />    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="31dp"/></LinearLayout>

Item_xvp:

<?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">    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="150dp"        android:id="@+id/xvp"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true">    </android.support.v4.view.ViewPager>    <LinearLayout        android:orientation="horizontal"        android:layout_width="match_parent"        android:layout_height="30dp"        android:id="@+id/ll"        android:layout_alignBottom="@+id/xvp"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"></LinearLayout></RelativeLayout>


MainActivity:

package com.example.yuekao1;import android.graphics.Color;import android.os.Bundle;import android.support.annotation.IdRes;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.widget.RadioButton;import android.widget.RadioGroup;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    private ViewPager dvp;    private RadioGroup rg;    private RadioButton radio1;    private RadioButton radio2;    private RadioButton radio3;    private RadioButton radio4;    ArrayList<Fragment> fragList = new ArrayList<>();    ArrayList<RadioButton> rblist = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initadd();        MAdapter adapter = new MAdapter(getSupportFragmentManager());        dvp.setAdapter(adapter);        dvp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                rg.check(position);                for (int i = 0; i <rblist.size() ; i++) {                    RadioButton button = rblist.get(i);                    if(i==position)                    {                        button.setTextColor(Color.RED);                    }else                    {                        button.setTextColor(Color.BLACK);                    }                }            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {                for (int j = 0; j <rblist.size() ; j++) {                    int id = rblist.get(j).getId();                    if(i==id)                    {                        dvp.setCurrentItem(j);                    }                }            }        });    }    private void initadd() {        dvp = (ViewPager)findViewById(R.id.dvp);        rg = (RadioGroup)findViewById(R.id.rg);        radio1 = (RadioButton)findViewById(R.id.radio1);        radio2 = (RadioButton)findViewById(R.id.radio2);        radio3 = (RadioButton)findViewById(R.id.radio3);        radio4 = (RadioButton)findViewById(R.id.radio4);        rblist.add(radio1);        rblist.add(radio2);        rblist.add(radio3);        rblist.add(radio4);        Fragment1 f1 = new Fragment1();        Fragment2 f2 = new Fragment2();        Fragment3 f3 = new Fragment3();        Fragment4 f4 = new Fragment4();        fragList.add(f1);        fragList.add(f2);        fragList.add(f3);        fragList.add(f4);    }    private class MAdapter extends FragmentPagerAdapter {        public MAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return fragList.get(position);        }        @Override        public int getCount() {            return fragList.size();        }    }}

Fragment1:

package com.example.yuekao1;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.bawei.wzq.wzlibrary.view.XListView;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;public class Fragment1 extends Fragment implements XListView.IXListViewListener {    private View view;    private MAdaptet adaptet;    private XListView xlv;    private View view1;    private ViewPager xvp;    private LinearLayout ll;    private StringBuilder builder;    private List<GsonBean.DataBean.ComicsBean> comicsBeen;    private List<GsonBean.DataBean.ComicsBean> comiList = new ArrayList<>();    ArrayList<ImageView> imgList = new ArrayList<>();    private ImageView imageView;    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            int item = xvp.getCurrentItem();            item++;            xvp.setCurrentItem(item);            sendMsg();        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment1, container, false);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //初始化控件        initView();        new Asytack().execute("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9");    }        private void initView() {        xlv = (XListView) view.findViewById(R.id.xlv);        View inflate = View.inflate(getActivity(), R.layout.xlv_vp, null);        xvp = (ViewPager) inflate.findViewById(R.id.xvp);        ll = (LinearLayout) inflate.findViewById(R.id.ll);        xlv.setXListViewListener(this);        xlv.setPullLoadEnable(true);        xlv.addHeaderView(inflate);    }    public void stopRefresh() {        xlv.stopRefresh();        xlv.stopLoadMore();        xlv.setRefreshTime("刚刚");    }    @Override    public void onRefresh() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                //移除                ll.removeAllViews();                comiList.clear();                new Asytack().execute("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9");                adaptet.notifyDataSetChanged();                stopRefresh();            }        }, 2000);    }    @Override    public void onLoadMore() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                new Asytack().execute("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9");                adaptet.notifyDataSetChanged();                stopRefresh();            }        }, 2000);    }    private class Asytack extends AsyncTask<String, Void, String> {        @Override        protected String doInBackground(String... strings) {            try {                URL url = new URL(strings[0]);                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                int responseCode = urlConnection.getResponseCode();                if (responseCode == 200) {                    InputStream inputStream = urlConnection.getInputStream();                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));                    builder = new StringBuilder();                    String str = "";                    while ((str = bufferedReader.readLine()) != null) {                        builder.append(str);                    }                }                return builder.toString();            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            Gson gson = new Gson();            GsonBean gsonBean = gson.fromJson(s, GsonBean.class);            comicsBeen = gsonBean.getData().getComics();            comiList.addAll(comicsBeen);            adaptet = new MAdaptet();            xlv.setAdapter(adaptet);            xvp.setAdapter(new MAdapter());            initdot();            xvp.setCurrentItem(1000);            sendMsg();            xvp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {                @Override                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                }                @Override                public void onPageSelected(int position) {                    //图片点集合                    for (int i = 0; i < imgList.size(); i++) {                        if (position % imgList.size() == i) {                            imgList.get(position % imgList.size()).setImageResource(R.drawable.shi);                        } else {                            imgList.get(i).setImageResource(R.drawable.kong);                        }                    }                }                @Override                public void onPageScrollStateChanged(int state) {                }            });            super.onPostExecute(s);        }        @Override        protected void onProgressUpdate(Void... values) {            super.onProgressUpdate(values);        }    }    private void sendMsg() {        handler.sendEmptyMessageDelayed(1, 2000);    }    private void initdot() {        if (imgList != null) {            imgList.clear();        }        for (int i = 0; i < comicsBeen.size(); i++) {            imageView = new ImageView(getActivity());            if (i == 0) {                imageView.setImageResource(R.drawable.shi);            } else {                imageView.setImageResource(R.drawable.kong);            }            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);            params.setMargins(10, 0, 10, 0);            ll.addView(imageView, params);            imgList.add(imageView);        }    }    private class MAdaptet extends BaseAdapter {        private static final int TYPE1 = 0;        private static final int TYPE2 = 1;        @Override        public int getCount() {            return comiList.size();        }        @Override        public Object getItem(int i) {            return comiList.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            GsonBean.DataBean.ComicsBean bean = comiList.get(i);            ViewHolder holder;            ViewHolder2 holder2;            int type = getItemViewType(i);            switch (type) {                case 0:                    if (view == null) {                        holder = new ViewHolder();                        view = View.inflate(getActivity(), R.layout.item_xlv, null);                        holder.imageView = (ImageView) view.findViewById(R.id.imageView);                        holder.textView = (TextView) view.findViewById(R.id.textView);                        view.setTag(holder);                    } else {                        holder = (ViewHolder) view.getTag();                    }                    ImageLoader.getInstance().displayImage(bean.getCover_image_url(), holder.imageView);                    holder.textView.setText(bean.getTitle());                    break;                case 1:                    if (view == null) {                        holder2 = new ViewHolder2();                        view = View.inflate(getActivity(), R.layout.item_xlv, null);                        holder2.imageView = (ImageView) view.findViewById(R.id.imageView);                        view.setTag(holder2);                    } else {                        holder2 = (ViewHolder2) view.getTag();                    }                    ImageLoader.getInstance().displayImage(bean.getCover_image_url(), holder2.imageView);                    break;            }            return view;        }        @Override        public int getItemViewType(int position) {            if (position % 2 == 0) {                return TYPE1;            } else {                return TYPE2;            }        }        @Override        public int getViewTypeCount() {            return 2;        }        class ViewHolder {            ImageView imageView;            TextView textView;        }        class ViewHolder2 {            ImageView imageView;        }    }    private class MAdapter extends PagerAdapter {        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            ImageView imageView = new ImageView(getActivity());            ImageLoader.getInstance().displayImage(comicsBeen.get(position % comicsBeen.size()).getCover_image_url(), imageView);            container.addView(imageView);            return imageView;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }}



原创粉丝点击