TabLayout+XlistView

来源:互联网 发布:java me基础教程 编辑:程序博客网 时间:2024/06/18 06:35

主Activity里做的Tablayout


public class MainActivity extends AppCompatActivity {    TabLayout tab;    ViewPager vp;    List<String> listStr ;    List<Fragment> listTv ;   // private String[] titles = new String[]{"聊天", "好友", "发现", "我的","聊天", "好友", "发现", "我的","聊天", "好友", "发现", "我的"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tab = (TabLayout) findViewById(R.id.tab);        vp = (ViewPager) findViewById(R.id.vp);        listStr = new ArrayList();        listStr.add("福利");        listStr.add("Android");        listStr.add("iOS");        listStr.add("休息视频");        listStr.add("拓展资源");        listStr.add("前端");        listStr.add("all");        listTv = new ArrayList<>();        for (int i = 0; i < 7; i++) {            listTv.add(new NewsFragment(listStr.get(i)));        }        vp.setAdapter(new MyAdapter(getSupportFragmentManager()));        tab.setTabMode(TabLayout.MODE_SCROLLABLE);        tab.setupWithViewPager(vp);    }    class MyAdapter extends FragmentPagerAdapter {        public MyAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return listTv.get(position);        }        @Override        public int getCount() {            return listTv.size();        }        @Override        public CharSequence getPageTitle(int position) {            return listStr.get(position);        }    }}
XlistView的适配器
public class MyApdata extends BaseAdapter {    //构造参数    private List<Bean.ResultsBean> list;    //创建上下文    private Context context;    public MyApdata(List<Bean.ResultsBean> list, Context context) {        this.list = list;        this.context = context;    }    public void add(List<Bean.ResultsBean> data, boolean b){        for(Bean.ResultsBean bean: data) {            if (b){                list.add(0,bean);            }else{                list.add(bean);            }        }    }    //有几个条目类型    @Override    public int getViewTypeCount() {        return 2;    }    //判断怎样分辨每个条目的位置    @Override    public int getItemViewType(int position) {        if(position%2==0){            return 0;        }else{            return 1;        }    }    @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=null;        int type = getItemViewType(i);                if(view==null){                    view=View.inflate(context,R.layout.itme_one,null);                    holder=new ViewHolder();                    holder.iv= (ImageView) view.findViewById(R.id.iv);                    holder.tv1= (TextView) view.findViewById(R.id.tv1);                    view.setTag(holder);                }else{                    holder= (ViewHolder) view.getTag();                }                holder.tv1.setText(list.get(i).getDesc());                ImageLoader.getInstance().displayImage(list.get(i).getUrl(),holder.iv);        DisplayImageOptions build = new DisplayImageOptions.Builder()                .cacheInMemory(true)                .cacheOnDisk(true)                .showImageForEmptyUri(R.mipmap.ic_launcher)                .showImageOnFail(R.mipmap.ic_launcher)                .showImageOnLoading(R.mipmap.ic_launcher)                .build();        return view;    }    //优化XlistView    class ViewHolder{        ImageView iv;        TextView tv1 ;    }}
Fragment里面做的上拉刷新下拉加载
public class NewsFragment extends Fragment implements  XListView.IXListViewListener{    private final String s;    XListView xlv;    int NUM=1;    List<Bean.ResultsBean> results;    List<Bean.ResultsBean> list = new ArrayList<>();    boolean boo;    private MyApdata myApdata;    public NewsFragment(String s) {        this.s= s;    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,                             @Nullable Bundle savedInstanceState) {        View view = View.inflate(getActivity(),R.layout.fragment,null);        xlv =view.findViewById(R.id.xlv) ;        //使xlistview支持下拉刷新和上拉加载        xlv.setPullRefreshEnable(true);        xlv.setPullLoadEnable(true);        xlv.setXListViewListener(this);        ListGson();        return view;    }    //ListView的解析    public void ListGson(){        new AsyncTask<String,String,String>(){            @Override            protected String doInBackground(String... strings) {                String read = getNetDataStr();                // 使用Gson把该字符输入流转换成JavaBean                return read;            }            @Override            protected void onPostExecute(String result) {                super.onPostExecute(result);                Gson gson = new Gson();                Bean bean = gson.fromJson(result, Bean.class);                results = bean.getResults();                setAdapter(results);                Date date = new Date(System.currentTimeMillis());                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");                String time = simpleDateFormat.format(date);                xlv.setRefreshTime(time);            }        }.execute();    }    public void setAdapter(List<Bean.ResultsBean> list){        if(myApdata == null){            myApdata = new MyApdata(results,getActivity());            xlv.setAdapter(myApdata);        }else{            myApdata.add(list,boo);            myApdata.notifyDataSetChanged();        }    }    //下拉刷新    @Override    public void onRefresh() {        NUM++;        boo=true;        ListGson();        xlv.stopRefresh();    }    //上拉加载    @Override    public void onLoadMore() {        NUM++;        boo=false;        ListGson();        xlv.stopLoadMore();    }    public String getNetDataStr() {        String json = null;        try {            URL url = new URL(                    "http://gank.io/api/data/Android/10/"+NUM);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            //设置            conn.setReadTimeout(5000);            conn.setConnectTimeout(5000);            conn.setRequestMethod("GET");            int code = conn.getResponseCode();            if (code == 200) {                InputStream is = conn.getInputStream();                ByteArrayOutputStream bos = new ByteArrayOutputStream();                int len = -1;                byte[] buff = new byte[1024];                while((len = is.read(buff)) != -1){                    bos.write(buff,0,len);                }                json = new String(bos.toByteArray());            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return json;    }}



原创粉丝点击