Tab的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.heyongwu1509a20170918.MainActivity"><android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tabs"
        app:tabIndicatorColor="@color/red"
        app:tabMode="scrollable"
        app:tabSelectedTextColor="@color/red"
        app:tabTextColor="@color/black"/><android.support.v4.view.ViewPager
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/vp"/>
</LinearLayout>
pull的布局
<?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"><com.handmark.pulltorefresh.library.PullToRefreshListView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/pull_refresh_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#000000"
        android:divider="#19000000"
        android:dividerHeight="4dp"
        android:fadingEdge="none"
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:smoothScrollbar="true"
        ptr:ptrAnimationStyle="rotate"
        ptr:ptrHeaderTextColor="#ffffff"
        ptr:ptrHeaderSubTextColor="#00ffff"
        ptr:ptrHeaderBackground="@null"
        />
</LinearLayout>

主方法
public class MainActivity extends AppCompatActivity {//上面的滑动布局
    private TabLayout tabLayout;private LayoutInflater in;private ViewPager vp;private String[] channels = {里面写横排条目};private String[] urls={"里面写地址可用是json也可以是数组"};//存放fragment的集合
    private List<ChannelFragment> nview=new ArrayList();//创建的fragment对象
    private ChannelFragment channelFragment;@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);vp= (ViewPager) findViewById(R.id.vp);tabLayout = (TabLayout) findViewById(R.id.tabs);in = LayoutInflater.from(this);for(int i=0;i<channels.length;i++){channelFragment = new ChannelFragment();Bundle bundle = new Bundle();bundle.putString("url",urls[i]);channelFragment.setArguments(bundle);nview.add(channelFragment);tabLayout.addTab(tabLayout.newTab().setText(channels[i]));}FragmentManager fm = getSupportFragmentManager();MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(fm, nview);vp.setAdapter(adapter);tabLayout.setupWithViewPager(vp);tabLayout.setTabsFromPagerAdapter(adapter);}//viewpager适配器class MyFragmentPagerAdapter extends FragmentPagerAdapter {private List<ChannelFragment> nview;public MyFragmentPagerAdapter(FragmentManager fm, List nview) {super(fm);this.nview=nview;}@Override
        public int getCount() {return nview.size();}@Override
        public CharSequence getPageTitle(int position) {return channels[position];}@Override
        public Fragment getItem(int position) {return nview.get(position);}}}//这个是fragment的方法
public class ChannelFragment extends Fragment{private String news_url;private ListView lv;PullToRefreshListView mPullRefreshListView;String ss = "";View view;private List<News> newslist;private MyAdapter adapter;@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);Bundle bundle = getArguments();news_url = (String) bundle.get("url");}@Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {view = inflater.inflate(R.layout.item,null);initView();initDate();return view;}private void initDate() {xiala();}private void initView() {mPullRefreshListView = (PullToRefreshListView) view.findViewById(R.id.pull_refresh_list);mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {@Override
            //跟新方法
            public void onRefresh(PullToRefreshBase<ListView> refreshView) {xiala();}});//设置滑动尾部的监听器
        mPullRefreshListView.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {@Override
            public void onLastItemVisible() {shangti();//滑动到底部是,提示已经到底部了

            }});}public void xiala(){new AsyncTask<String, Integer, String>() {@Override
            protected String doInBackground(String... params) {String s = params[0];String getsss = new HttpUrl().getsss(s);return getsss;}@Override
            protected void onPostExecute(String s) {super.onPostExecute(s);Bean bean = new Gson().fromJson(s, Bean.class);newslist = bean.getNewslist();adapter = new MyAdapter(newslist, getActivity());mPullRefreshListView.setAdapter(adapter);mPullRefreshListView.onRefreshComplete();}}.execute(news_url);}public void shangti(){new AsyncTask<String, Integer, String>() {@Override
            protected String doInBackground(String... params) {String s = params[0];String getsss = new HttpUrl().getsss(s);return getsss;}@Override
            protected void onPostExecute(String s) {super.onPostExecute(s);Bean bean = new Gson().fromJson(s, Bean.class);newslist.addAll(bean.getNewslist());adapter.notifyDataSetChanged();}}.execute(news_url);}
}

适配器还有一个布局
<?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"><TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" /><ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

建立一个Myapp

public class Loader extends Application {@Override
    public void onCreate() {super.onCreate();File file = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "UniversalImageLoader/Cache");DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(getApplicationContext()).defaultDisplayImageOptions(options).memoryCache(new LRULimitedMemoryCache(12*1024*1024)).memoryCacheSize(12*1024*1024).diskCache(new UnlimitedDiskCache(file)).threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().diskCacheFileNameGenerator(new Md5FileNameGenerator()).tasksProcessingOrder(QueueProcessingType.LIFO).writeDebugLogs().build();ImageLoader.getInstance().init(configuration);}
}

然后就是适配器啦

public class MyAdapter extends BaseAdapter {private List<News> list;private Context context;public MyAdapter(List<News> list, Context context) {this.list = list;this.context = context;}@Override
    public int getCount() {return list.size();}@Override
    public Object getItem(int position) {return list.get(position);}@Override
    public long getItemId(int position) {return position;}@Override
    public View getView(int position, View convertView, ViewGroup parent) {DisplayImageOptions option = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).imageScaleType(ImageScaleType.EXACTLY).build();convertView = View.inflate(context,R.layout.item2,null);TextView tv = (TextView) convertView.findViewById(R.id.tv);ImageView iv = (ImageView) convertView.findViewById(R.id.iv);tv.setText(list.get(position).getCtime()+list.get(position).getDescription()+list.get(position).getCtime());ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(),iv,option);return convertView;}
}

异步的httpurl方法

public class HttpUrl {public String getsss(String ss){URL url = null;String hh = "";HttpURLConnection httpURLConnection = null;try {url = new URL(ss);httpURLConnection = (HttpURLConnection) url.openConnection();int responseCode = httpURLConnection.getResponseCode();if (responseCode == 200){InputStream inputStream = httpURLConnection.getInputStream();byte [] b =new byte[1024];int len = 0;while((len = inputStream.read(b))!=-1){hh += new String(b,0,len);}inputStream.close();}} catch (Exception e) {e.printStackTrace();}return hh;}}

PullAndTab组合横排滑动上落下提相关推荐

  1. Android 滑动显示下一层界面

    Android 滑动显示下一层界面 主要activity: public class UpPage extends Activity { private Button upButton; privat ...

  2. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

  3. TabLayout横排滑动

    我以前有写过Tablayout横排滑动,不过相对有些幼稚,而且跟不上一些节奏了. 这个tablayout适合你滑动的相同布局不同数据的那种 像你如果tablayout滑动的每个页面差距特别的大这个就不 ...

  4. 手机html图片自动滚动,html5手机触屏滑动图片下一张查看特效

    特效描述:html5 手机触屏 滑动图片 下一张查看特效.html5图片下一张查看 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 Hungry cat 6 Whatever Hung ...

  5. 类的组合在什么情况下使用_什么情况下选择使用圆锥滚子轴承?(原创轴承外贸写作素材)...

    什么情况下选择使用圆锥滚子轴承?(轴承外贸写作素材) When should you choose to use tapered roller bearings? (Bearing foreign t ...

  6. 自定义组合控件:下拉选择框

    Spinner 自定义组合控件之下拉选择框 项目概述 下拉选择框主要是通过在EditText 下用PopupWindow 动态显示ListView 控件来实现的.下拉选择框可以方便用户的输入效率,以此 ...

  7. (转)详解Vs2008下打包安装程序的一些技巧(含win7下提权限、卸载以及安装时定向到网页)...

    1.怎么使得程序窗口左上角和任务栏有图标,如下图所示:           其实这个问题不应该放到程序打包这部分讲,只不过对于一些初学者而言,在这提下也许会有很大的帮助(想到自己刚学.net那会了,呵 ...

  8. appium实现向上滑动,向下滑动,向左滑动,向右滑动

    一.配置连接 from appium import webdriverdesired_caps = {} desired_caps['platformName'] = 'Android' # 系统名 ...

  9. [小黄书小程序]主页面标签栏水平滑动和下拉弹出框

    上一章我们实现了小黄书小程序的搜索栏的界面呈现.这一章我们将会参考小红书实现搜索栏下面的标签栏. 该标签栏存在的意义是,用户可以根据选择的标签来快速呈现相关的内容.该标签栏界面主要是两个功能模块. 一 ...

最新文章

  1. 全球及中国卫星通信设备市场应用需求分析与投资潜力预测报告2022年
  2. 了解和使用类库(47)
  3. 信息学奥赛C++语言:装饰水果
  4. python爬取京东商品信息代码_Python利用Xpath选择器爬取京东网商品信息
  5. 设计模式笔记十一:外观模式
  6. 关于echarts的疑问
  7. mysql5.7.28升级到5.7.29_MySQL升级5.7.29
  8. VC6下编译fltk-1.3.5
  9. android关机铃声代码,android系统添加关机铃声
  10. html 卫星地图显示地名,卫星图看:河南10个名字非常好听的县(区),你认识几个?...
  11. 扫一下这个神奇的二维码,Wifi不用输密码
  12. springboot内存占用过高问题排查 - jvm内存使用分析
  13. 解决笔记本同时连接局域网和外网网络后上网很卡的问题
  14. node.js基于vue的化妆品销售管理系统的设计与实现毕业设计源码151314
  15. 【AI产品】前沿黑科技,安利一款能让你的照片动起来的app
  16. JavaEclipse中从Lambada表达式运行错误的解决方法到学到新知识
  17. pip升级失败,pip拒绝访问
  18. 做门户网站 个人站长的新好出路
  19. 本地python环境快速迁移到另外一台电脑
  20. prometheus变量_Prometheus配置文件

热门文章

  1. mount / umount命令
  2. 学习《Linux就该这么学》第十一课
  3. MacBook安装WTG不详细的教程(含泪踩坑)
  4. 构建在知识中台基础上的企业画像
  5. 计算机在体育教育中的作用,浅谈计算机在体育教学中的应用
  6. 计算机主机名和全限定域名,什么是完全限定域名?
  7. Java泛型类型限定
  8. Wireshark 用户使用手册 ———— Telephony 模块
  9. practically
  10. 【身份证识别】BP神经网络身份证号码识别【含Matlab源码 1344期】