Tablayout与XListView

	
<?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">

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />


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

    <com.bwie.xlistviewlibrary.View.XListView
        android:id="@+id/xlv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

 
__________________________________________________________________________
public class MainActivity extends AppCompatActivity {
    private TabLayout tabLayout;
    private ViewPager viewPager;
    ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();

//    String url = "http://gank.io/api/data/Android/10/1";
    String baseUrl = "http://gank.io/api/data/";
    String[] string={"福利","Android","iOS","休息视频","拓展资源","前端","all"};
    private List<String> titleList;//这个是标题的集合

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        titleList = Arrays.asList(string);
        for (int i = 0; i < titleList.size(); i++) {
            //URLEncoder.encode这个方法对中文进行转义;
            String urlTemp = baseUrl+ URLEncoder.encode(titleList.get(i));
            BlankFragment fragment = BlankFragment.getInstances(urlTemp);
            fragmentList.add(fragment);
        }
        viewPager.setAdapter(new MPagerAdapter(getSupportFragmentManager()));
        //tablayout的标题的显示模式
        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
        tabLayout.setupWithViewPager(viewPager);
    }


    class  MPagerAdapter extends FragmentPagerAdapter {

        public MPagerAdapter(FragmentManager fm) {
            super(fm);
        }

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

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

        //需要重写个返回标题的方法;
        @Override
        public CharSequence getPageTitle(int position) {
            return titleList.get(position);
        }
    }
}
 
_____________________
 
public class BlankFragment extends Fragment implements XListView.IXListViewListener {

    private String url;
    private XListView xListView;
    ArrayList<Product.ResultsBean> list = new ArrayList<Product.ResultsBean>();

    int page = 1;
    private MAdapter mAdapter;
    private ImageLoader imageLoaderInstance;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.frag1, null);
        xListView = view.findViewById(R.id.xlv);
        return view;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Bundle bundle = getArguments();
        url = bundle.getString("url");
        imageLoaderInstance = ImageLoader.getInstance();
        mAdapter = new MAdapter();
        xListView.setAdapter(mAdapter);//设置listview的适配器;
        getNetData(1);//获取网络数据
        xListView.setXListViewListener(this);
        xListView.setPullLoadEnable(true);//设置可以加载更多;

    }

    public static BlankFragment getInstances(String url) {
        BlankFragment blankFragment = new BlankFragment();
        Bundle bundle = new Bundle();
        bundle.putString("url", url);
        blankFragment.setArguments(bundle);
        return blankFragment;

    }

    private void getNetData(int pagerTemp) {
        new MAsyncTask().execute(url + "/10/" + pagerTemp);
    }

    @Override
    public void onRefresh() {

        list.clear();
        getNetData(1);
        UiComplete();

    }


    @Override
    public void onLoadMore() {
        getNetData(page++);
        UiComplete();
    }

    public void UiComplete() {
        xListView.stopRefresh();
        xListView.stopLoadMore();
        xListView.setRefreshTime("刚刚");
    }

    /**
     * 创建异步任务类
     * 第一个泛型---是传递过来的接口地址
     * 第二个参数是 请求接口的进度
     * 第三个参数是 异步任务处理完返回的数据
     */
    class MAsyncTask extends AsyncTask<String, Void, String> {
        public MAsyncTask() {
            super();
        }

        /**
         * String... strings  这个参数是可变参数;
         * 这个方法运行在子线程,去请求网络;
         */
        @Override
        protected String doInBackground(String... strings) {
            String url = strings[0];
            String netjson = NetWordUtils.getNetjson(url);
            //把从网络请求的json返回回去;
            Log.e("wzq", "doInBackground: " + netjson);
            return netjson;
        }


        /**
         * 这个方法接收的参数s, 就是doInBackground返回的值;
         * 这个方法是在主线程运行,可以更新ui;
         *
         * @param s
         */
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            Product product = gson.fromJson(s, Product.class);
            List<Product.ResultsBean> results = product.getResults();
            list.addAll(results);
            mAdapter.notifyDataSetChanged();

        }
    }


    class MAdapter extends BaseAdapter {


        @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) {
            View viewItem = View.inflate(getActivity(), R.layout.listview, null);
            TextView textView = (TextView) viewItem.findViewById(R.id.textView);
            ImageView imageView = (ImageView) viewItem.findViewById(R.id.imageView);
            textView.setText(list.get(i).getDesc());
            DisplayImageOptions options = new DisplayImageOptions.Builder()
                    .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
                    .build();
            imageLoaderInstance.displayImage(list.get(i).getUrl(), imageView,options);

            return viewItem;
        }
    }


}

 

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值