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

来源:互联网 发布:淘宝页面怎么设计 编辑:程序博客网 时间:2024/05/22 04:42

需要用到的功能

/**

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

    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 0
原创粉丝点击