有关Fragment的侧滑+上拉刷新+下拉加载的完整代码:

mainactivity.xml:代码

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer"
android:layout_height=“match_parent”
tools:context=".MainActivity">

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width=“match_parent”
android:layout_height=“0dp”
android:layout_weight=“2”/>





<LinearLayout
    android:id="@+id/left"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_gravity="left"
    android:gravity="center_horizontal"
    android:layout_marginBottom="20dp"
    android:background="@mipmap/aa">
    <ListView
        android:id="@+id/listv"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

</android.support.v4.widget.DrawerLayout>

mainactivity.java代码:
package com.gy.app;

import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RadioGroup;

import com.gy.app.adapter.MAdapter;
import com.gy.app.bean.Gybean;
import com.gy.app.frament.Frage1;
import com.gy.app.frament.Frage2;
import com.gy.app.frament.Frage3;

import java.util.ArrayList;

public class MainActivity extends FragmentActivity {

private ViewPager pager;
private RadioGroup radio;
private ListView listv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
}

public void init(){
    //控件
    pager = findViewById(R.id.pager);
    radio = findViewById(R.id.radiogroup);
    listv = findViewById(R.id.listv);
    final ArrayList<Fragment> list = new ArrayList<>();
    list.add(new Frage1());
    list.add(new Frage2());
    list.add(new Frage3());
    radio.check(radio.getChildAt(0).getId());
    pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
            radio.check(radio.getChildAt(i).getId());
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });
    pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int i) {
            return list.get(i);
        }

        @Override
        public int getCount() {
            return list.size();
        }
    });
    radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId){
                case R.id.radioButton1:
                    pager.setCurrentItem(0);
                    break;
                case R.id.radioButton2:
                    pager.setCurrentItem(1);
                    break;
                case R.id.radioButton3:
                    pager.setCurrentItem(2);
                    break;
            }
        }
    });
    final DrawerLayout drawer = findViewById(R.id.drawer);
    ListView listv = findViewById(R.id.listv);
    final ArrayList<Gybean> list1 = new ArrayList<>();
    list1.add(new Gybean("首页"));
    list1.add(new Gybean("小视频"));
    list1.add(new Gybean("我的"));
    drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
        @Override
        public void onDrawerSlide(@NonNull View view, float v) {

        }

        @Override
        public void onDrawerOpened(@NonNull View view) {

        }

        @Override
        public void onDrawerClosed(@NonNull View view) {

        }

        @Override
        public void onDrawerStateChanged(int i) {

        }
    });
    listv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (list1.get(position).getName().equals("首页")){
                pager.setCurrentItem(0);
                //关闭侧滑
                drawer.closeDrawers();
            }
            if (list1.get(position).getName().equals("小视频")){
                pager.setCurrentItem(1);
                //关闭侧滑
                drawer.closeDrawers();
            }
            if (list1.get(position).getName().equals("我的")){
                pager.setCurrentItem(2);
                //关闭侧滑
                drawer.closeDrawers();
            }
        }
    });
    MAdapter mAdapter = new MAdapter(MainActivity.this, list1);
    listv.setAdapter(mAdapter);

}

}

frage1.xml代码:

<?xml version="1.0" encoding="utf-8"?>


<com.gy.app.xListView.XListView
android:id="@+id/listview"
android:layout_width=“match_parent”
android:layout_height=“wrap_content” />

frage1.java代码:
package com.gy.app.frament;

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

import com.google.gson.Gson;
import com.gy.app.MainActivity;
import com.gy.app.R;
import com.gy.app.adapter.MAdapter;
import com.gy.app.adapter.MyAdapter;
import com.gy.app.bean.Gybean;
import com.gy.app.bean.LgyBean;
import com.gy.app.xListView.XListView;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Frage1 extends Fragment implements XListView.IXListViewListener {

Context context;
private View view;
public String messages;
private XListView listView;
private MyAdapter myAdapter;
int page=1;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.frage1,container,false);
    init();
    getdata();
    return view;
}
public void getdata(){
    new MyAsynctask().execute();
}
public void init(){
    listView = view.findViewById(R.id.listview);
    listView.setXListViewListener(this);
    listView.setPullLoadEnable(true);
    listView.setPullRefreshEnable(true);
}

//下拉刷新
@Override
public void onRefresh() {
    page=1;
    new Runnable(){
        @Override
        public void run() {
            getdata();
            myAdapter.notifyDataSetChanged();
        }
    }.run();
    onLoad();
}
//上拉加载
@Override
public void onLoadMore() {
    page+=1;
    new Runnable(){
        @Override
        public void run() {
            getdata();
            myAdapter.notifyDataSetChanged();
        }
    }.run();
    onLoad();
}
//关闭刷新加载
public void onLoad() {
    listView.stopLoadMore();
    listView.stopRefresh();
    listView.setRefreshTime(time());
}
//获取当前时间
public String time() {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    Date date = new Date(System.currentTimeMillis());
    return dateFormat.format(date);
}

class MyAsynctask extends AsyncTask<Integer,Integer,String>{

    //子线程耗时操作
    @Override
    protected String doInBackground(Integer... integers) {
        try {
            String url="http://www.xieast.com/api/news/news.php?page="+page+"";
            URL url1 = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
            //设置请求
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5*1000);
            connection.setReadTimeout(5*1000);
            connection.connect();
            //输入流
            if (connection.getResponseCode()==200){
                InputStream inputStream = connection.getInputStream();
                byte[] data=new byte[1024*521];
                int a=0;
                ByteArrayOutputStream sb = new ByteArrayOutputStream();
                while ((a=inputStream.read(data))>-1){
                    sb.write(data,0,a);
                }
                messages=sb.toString();
                inputStream.close();
                connection.disconnect();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return messages;
    }

    //完成后执行
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (s != null) {
            //解析
            Gson gson = new Gson();
            LgyBean bean = gson.fromJson(s, LgyBean.class);
            List<LgyBean.DataBean> list = bean.getData();
            if (list != null) {
                myAdapter = new MyAdapter(getContext(), (ArrayList<LgyBean.DataBean>) list);
                listView.setAdapter(myAdapter);
            }
        }
    }
}

}

MyAdapter适配器代码:
package com.gy.app.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.gy.app.MainActivity;
import com.gy.app.R;
import com.gy.app.bean.LgyBean;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;

public class MyAdapter extends BaseAdapter {
Context context;
ArrayList<LgyBean.DataBean> list;
private TextView t1;
private ImageView img1;
private TextView t2;
private ImageView img2;
private ImageView img3;
private ImageView img4;

public MyAdapter(Context context,ArrayList<LgyBean.DataBean> list) {
    this.context = context;
    this.list=list;
}

@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) {
    ViewHolder holder=null;
    if (convertView==null){
        holder=new ViewHolder();
        int type = getItemViewType(position);
        switch (type){
            case 0:
                convertView=View.inflate(context, R.layout.iteam1,null);
                t1 = holder.tee1 = convertView.findViewById(R.id.t1);
                img1 = holder.imgee1 = convertView.findViewById(R.id.img1);
                t1.setText(list.get(position).getAuthor_name());
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.imgee1);
                break;
            case 1:
                convertView=View.inflate(context, R.layout.iteam2,null);
                t2 = holder.tee1 = convertView.findViewById(R.id.t2);
                img2 = holder.imgee2 = convertView.findViewById(R.id.img2);
                img3 = holder.imgee3 = convertView.findViewById(R.id.img3);
                img4 = holder.imgee4 = convertView.findViewById(R.id.img4);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.imgee2);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.imgee3);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder.imgee4);
                t2.setText(list.get(position).getTitle());
                break;
        }
        convertView.setTag(holder);
    }else{
        holder= (ViewHolder) convertView.getTag();
    }
    return convertView;
}
//返回条目类型的数量
@Override
public int getViewTypeCount() {
    return 2;
}
//返回条目的类型
@Override
public int getItemViewType(int position) {
    return position%2;
}

class ViewHolder{
    TextView tee1,tee2;
    ImageView imgee1,imgee2,imgee3,imgee4;
}

}

mapp.java代码;
package com.gy.app.app;

import android.app.Application;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.Log;

import com.gy.app.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;

import java.io.File;

public class Myapp extends Application {
@Override
public void onCreate() {
super.onCreate();
String s = getFilesDir().getPath() + “/lgy”;
File file = new File(s);
Log.i(“m”,“ss:”+s);
//实例化ImageLoaderConfiguration
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽
.diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
.threadPoolSize(3) // default 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
.memoryCacheSizePercentage(13) // default
.diskCache(new UnlimitedDiskCache(file)) // default 可以自定义缓存路径
.diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.defaultDisplayImageOptions(options())
.build();
ImageLoader.getInstance().init(build);

}
public DisplayImageOptions options(){
   return new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.mipmap.ic_launcher)
            .showImageOnFail(R.mipmap.ic_launcher)
            .cacheInMemory(true)                               //启用内存缓存
           .cacheOnDisk(true)                                 //启用外存缓存
          .considerExifParams(true)              				                .bitmapConfig(Bitmap.Config.ARGB_8888) //设置图片的解码类型
            .displayer(new CircleBitmapDisplayer(Color.RED,1))//设置为圆形
            .build();
}

}

判断网络代码:
package com.gy.app.netutils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetWokUtils {
Context context;

public NetWokUtils(Context context) {
    this.context = context;
}

@SuppressLint("MissingPermission")
public boolean utlis(){
    //网络管理者
   ConnectivityManager manager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
   //网络类型
    NetworkInfo networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    return networkInfo.isConnected();
}

}

别忘了权限和注册
完事了。。。

猜你喜欢

转载自blog.csdn.net/gy1115/article/details/84893894