您的位置:首页 > 其它

头部为横向滑动,下面Fragment和ViewPager

2017-10-14 08:05 148 查看
需要用到的功能

/**

 * tablayout

 * viewpager +Adapter

 * ImagerLoader

 * AsyncTask+网络请求+gson

 * XListView

 *

 */

**Mainactivity**

import android.os.Bundle;

import android.support.design.widget.TabLayout;

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 java.net.URLEncoder;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;
/**

 * tablayout

 * viewpager +Adapter

 * ImagerLoader

 * AsyncTask+网络请求+gson

 * XListView

 *

 */

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);

        }

    }

}
**Fragment**

import android.graphics.Bitmap;

import android.os.AsyncTask;

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.support.v4.app.Fragment;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;
import com.bwie.xlistviewlibrary.View.XListView;

import com.bwie.xlistviewlibrary.utils.NetWordUtils;

import com.google.gson.Gson;

import com.nostra13.universalimageloader.core.DisplayImageOptions;

import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;

import java.util.List;
/**

 * 一定要注册xListview的监听回调

 */

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();
        }

    }

4000

    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;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: