TabLayout+Banner轮播滑动+GridView+PullToRefreshListView

该博客详细介绍了如何在Android中结合TabLayout、Banner组件和PullToRefreshListView实现上拉刷新、下拉加载功能。内容包括activity_main的布局设计,不使用BaseActivity, MainActivity的设置,必要的权限和库的导入,如Gson、Glide、Design库、Banner库以及PullToRefreshLibrary。此外,还涉及到TabAdapter、Tab布局的创建,HttpUtil的使用,以及自定义适配器MyAdapter和GridAdapter,用于处理Banner数据和GridView数据。最后,讲解了如何解析Json数据并展示在Bean类中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

activity_main布局

没有用base

<?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"
    tools:context=".MainActivity">

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

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

MainActivity

写权限 写权限 写权限

导包 导包 导包

1.(gson) implementation ‘com.google.code.gson:gson:2.8.5’
2. (glide)implementation ‘com.github.bumptech.glide:glide:4.9.0’
3. (design) implementation ‘com.android.support:design:28.0.0’
4. (banner) implementation ‘com.youth.banner:banner:1.4.9’
5. (pulltorefresh) implementation project(’:pulltorefresh_library’)

package weektest.baway.com.day7_1;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import java.util.ArrayList;

import weektest.baway.com.day7_1.adapter.TabAdapter;
import weektest.baway.com.day7_1.tablayout.Tab1;
import weektest.baway.com.day7_1.tablayout.Tab2;

public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private TabLayout tab;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        viewPager = findViewById(R.id.vp);
        tab = findViewById(R.id.tab);
        ArrayList<Fragment> list=new ArrayList<>();
        list.add(new Tab1());
        list.add(new Tab2());
        String[] str={"首页","我的"};
        TabAdapter adapter=new TabAdapter(getSupportFragmentManager(),list,str);
        viewPager.setAdapter(adapter);
        tab.setupWithViewPager(viewPager);
    }
}

TabAdapter

package weektest.baway.com.day7_1.adapter;

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class TabAdapter extends FragmentPagerAdapter {
    ArrayList<Fragment> list;
    String[] str;

    public TabAdapter(FragmentManager fm, ArrayList<Fragment> list, String[] str) {
        super(fm);
        this.list = list;
        this.str = str;
    }

    @Override
    public Fragment getItem(int i) {
        return list.get(i);
    }

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

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return str[position];
    }
}

Tab布局

<?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:background="#e49ae3"
    android:orientation="vertical">

    <com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

    <GridView
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="3" />

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pull"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

HttpUtil

package weektest.baway.com.day7_1;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpUtil {
    public static boolean isNet(Context context){
        if (context!=null){
            ConnectivityManager mConnectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mNetworkInfo=mConnectivityManager.getActiveNetworkInfo();
            if (mNetworkInfo!=null){
                return mNetworkInfo.isAvailable();
            }
        }
        return false;
    }
    public static void httpAsyncTask(String strUrl,final CallBackString backString){
        new AsyncTask<String,Integer,String>(){

            @Override
            protected String doInBackground(String... strings) {
                return httpGet(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                backString.getData(s);
            }
        }.execute(strUrl);
    }
    public interface CallBackString{
        void getData(String s);
    }
    public static String httpGet(String strUrl){
        try {
            URL url=new URL(strUrl);
            HttpURLConnection connection= (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
            connection.setRequestMethod("GET");
            InputStream stream=connection.getInputStream();
            BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
            StringBuilder builder=new StringBuilder();
            String str="";
            while ((str=reader.readLine())!=null){
                builder.append(str);
            }
            connection.disconnect();
            return builder.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

TabLayout

package weektest.baway.com.day7_1.tablayout;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;

import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.youth.banner.Banner;
import com.youth.banner.loader.ImageLoader;

import java.util.ArrayList;
import java.util.List;

import weektest.baway.com.day7_1.HttpUtil;
import weektest.baway.com.day7_1.R;
import weektest.baway.com.day7_1.adapter.GrdiAdapter;
import weektest.baway.com.day7_1.adapter.MyAdapter;
import weektest.baway.com.day7_1.bean.BannerBean;
import weektest.baway.com.day7_1.bean.GridBean;
import weektest.baway.com.day7_1.bean.JsonBean;
import weektest.baway.com.day7_1.bean.One;
import weektest.baway.com.day7_1.bean.Three;

public class Tab1 extends Fragment {

    private Banner banner;
    private GridView gridView;
    private PullToRefreshListView listView;
    private ArrayList<One> list;
    private String GridUrl = "http://gank.io/api/xiandu/categories";
    private String ListUrl = "http://172.17.8.100/small/commodity/v1/commodityList";
    private String bannerUrl = "https://api.apiopen.top/videoCategory";

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab1, container, false);
        //找控件
        banner = view.findViewById(R.id.banner);
        gridView = view.findViewById(R.id.gv);
        listView = view.findViewById(R.id.pull);
        listView.setMode(PullToRefreshListView.Mode.BOTH);
        listView.setScrollingWhileRefreshingEnabled(true);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //轮播图
        HttpUtil.httpAsyncTask(bannerUrl, new HttpUtil.CallBackString() {
            @Override
            public void getData(String s) {
                Gson gson = new Gson();
                BannerBean bean = gson.fromJson(s, BannerBean.class);
                List<BannerBean.Resul
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值