Viewpager+Fragment+Xlistview

来源:互联网 发布:宁波傲强自动编程软件 编辑:程序博客网 时间:2024/06/06 07:59

=============================activity===主要是fragment===================================

package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.os.Bundle;import android.support.annotation.IdRes;import android.support.v7.app.AppCompatActivity;import android.widget.FrameLayout;import android.widget.RadioGroup;public class MainActivity extends AppCompatActivity {    private FrameLayout framelayout;    private RadioGroup radiogroup;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        framelayout = (FrameLayout) findViewById(R.id.framelayout);        radiogroup = (RadioGroup) findViewById(R.id.radiogroup);               getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_01()).commit();        radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {                switch (i){                    case R.id.btn01:                        getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_01()).commit();                        break;                    case R.id.btn02:                        getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_02()).commit();                        break;                    case R.id.btn03:                        getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_03()).commit();                        break;                    case R.id.btn04:                        getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_04()).commit();                        break;                    default:                        break;                }            }        });    }}===================Fragmrnt_01====viewpager和xlistview的主要操作================== 
package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;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.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * Created by Lenovo on 2017/10/23. */public class Fragment_01 extends Fragment implements XListView.IXListViewListener {    private List<DataDataBean.DataBean> list = new ArrayList<>();    private ListviewAdapter listviewAdapter;    //定义一个int值记录第几页    private int page_num = 1;    private ViewPager viewpager;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what == 0){                //viewPager显示下一页                viewpager.setCurrentItem(viewpager.getCurrentItem() +1);                //再次发送延时消息                handler.sendEmptyMessageDelayed(0,2000);            }        }    };    private XListView xlistview;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment01_layout, container, false);        viewpager = view.findViewById(R.id.viewpager);        xlistview = view.findViewById(R.id.Xlistview);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        getDataFromNet();        xlistview.setPullRefreshEnable(true);//支持下拉刷新        xlistview.setPullLoadEnable(true);//支持上拉加载更多        xlistview.setXListViewListener(this);        getDataFromNet2();    }        //xlistview    private void getDataFromNet2() {        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1";                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    //设置                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    //获取                    int responseCode = connection.getResponseCode();                    if (responseCode == 200){                        InputStream inputStream = connection.getInputStream();                        String json = streamToString(inputStream,"utf-8");                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String s) {                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class);                //将解析到的集合数据添加到上面的大集合中                list.addAll(dataDataBean.getData());                //设置适配器...                setAdapter();                //上拉加载完成....停止加载                xlistview.stopLoadMore();            }        };        asyncTask.execute();    }    private void setAdapter() {        if (listviewAdapter == null){            listviewAdapter = new ListviewAdapter(getActivity(), list);            xlistview.setAdapter(listviewAdapter);        }else {            listviewAdapter.notifyDataSetChanged();        }    }       //viewpager    private void getDataFromNet() {        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=5&page=1";                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    int responseCode = connection.getResponseCode();                    if (responseCode == 200) {                        InputStream inputStream = connection.getInputStream();                        String json = streamToString(inputStream, "utf-8");                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String s) {                //打印以下数据看看是否获取到                Log.i("----", s);                if (s != null) {                    Gson gson = new Gson();                    DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class);                    List<DataDataBean.DataBean> list = dataDataBean.getData();                    //给viewPager设置适配器                    MyAdapter myAdapter = new MyAdapter(getActivity(), list, handler);                    //设置适配器                    viewpager.setAdapter(myAdapter);                    //2.手动的可以无限滑动                    viewpager.setCurrentItem(list.size() * 100000);//设置当前展示中间某个足够大的位置                    handler.sendEmptyMessageDelayed(0, 2000);//发送一个延时的空消息                }            }        };        asyncTask.execute();    }    private String streamToString(InputStream inputStream,String charset) {        try {            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);            String s = null;            StringBuilder builder = new StringBuilder();            while ((s = bufferedReader.readLine()) != null){                builder.append(s);            }            bufferedReader.close();            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return  null;    }         //监听    @Override    public void onRefresh() {        page_num ++;        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+page_num;                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    //设置                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    //获取                    int responseCode = connection.getResponseCode();                    if (responseCode == 200){                        InputStream inputStream = connection.getInputStream();                        String json = streamToString(inputStream,"utf-8");                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }                         @Override            protected void onPostExecute(String s) {                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class);                //下拉刷新的数据需要添加在大集合的最前边                list.addAll(0,dataDataBean.getData());                //设置适配器...                setAdapter();                //...............设置完数据之后刷新需要停止                xlistview.stopRefresh();//停止刷新                //System.currentTimeMillis()....当前时间的long类型的值                Date date = new Date(System.currentTimeMillis());                //格式化....yyyy-MM-dd HH:mm                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");                //设置本次刷新的时间                xlistview.setRefreshTime(simpleDateFormat.format(date));            }        };        asyncTask.execute();    }    @Override    public void onLoadMore() {        getDataFromNet2();    }}
=======================listviewadapter=======xlistview的adapter=============================================

package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by Lenovo on 2017/10/23. */class ListviewAdapter extends BaseAdapter{    Context context;    List<DataDataBean.DataBean> list;    public ListviewAdapter(Context context, List<DataDataBean.DataBean> list) {        this.context=context;        this.list=list;    }    @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 View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder holder;        if (view == null){            view = View.inflate(context,R.layout.item_layout,null);            holder = new ViewHolder();            holder.textview = view.findViewById(R.id.textview);            holder.imageview = view.findViewById(R.id.imageview);            view.setTag(holder);        }else {            holder = (ViewHolder) view.getTag();        }        holder.textview.setText(list.get(i).getTitle());        ImageLoader.getInstance().displayImage(list.get(i).getUserImg(),holder.imageview,ImageLoaderUtil.getDefaultOption());        return view;    }    private class ViewHolder{        ImageView imageview;        TextView textview;    }}
==========================MyAdapter===viewpager的Adapter================================================

package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.content.Context;import android.os.Handler;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by Lenovo on 2017/10/23. */public class MyAdapter extends PagerAdapter{    Context context;    List<DataDataBean.DataBean> list;    Handler handler;    public MyAdapter(Context context, List<DataDataBean.DataBean> list, Handler handler) {        this.context=context;        this.list=list;        this.handler=handler;    }    @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) {        //1.把这个当前展示的视图添加到容器中...container        ImageView imageView = new ImageView(context);        //..........使图片平铺整个imageView控件        imageView.setScaleType(ImageView.ScaleType.FIT_XY);        //imageLoader加载图片到这个imageView控件上        ImageLoader.getInstance().displayImage(list.get(position %list.size()).getUserImg(),imageView,ImageLoaderUtil.getDefaultOption());        container.addView(imageView);//添加到容器        //2.把当前展示的视图返回        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}
==========================activity_main====framelayout加radiogroup==============================================================

<?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"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023.MainActivity">    <FrameLayout        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="11"        android:id="@+id/framelayout">    </FrameLayout>    <RadioGroup        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:id="@+id/radiogroup"        android:orientation="horizontal"        >        <RadioButton            android:id="@+id/btn01"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="match_parent"            android:text="首页"            android:button="@null"            android:gravity="center"            />        <RadioButton            android:id="@+id/btn02"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="match_parent"            android:text="发现"            android:button="@null"            android:gravity="center"            />        <RadioButton            android:id="@+id/btn03"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="match_parent"            android:text="下载"            android:button="@null"            android:gravity="center"            />        <RadioButton            android:id="@+id/btn04"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="match_parent"            android:text="我的"            android:button="@null"            android:gravity="center"            />    </RadioGroup></LinearLayout>
===================fragment01========viewpager加xlistview==========================================================

<?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"    android:orientation="vertical">    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:id="@+id/viewpager">    </android.support.v4.view.ViewPager>  <wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023.XListView      android:layout_width="match_parent"      android:layout_height="0dp"      android:layout_weight="2"      android:id="@+id/Xlistview">  </wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023.XListView></LinearLayout>=====================item_layout====xlistview的条目视图===============================================
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="match_parent">     <ImageView         android:layout_width="100dp"         android:layout_height="100dp"         android:id="@+id/imageview"         />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/textview"        android:text="kkkk"        /></LinearLayout>

效果图如下:



原创粉丝点击