XListView展示/上拉加载/下拉刷新

在这里插入图片描述

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

<RadioGroup
    android:id="@+id/rg"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:textColor="#0f0"
        android:text="附近影院" />
    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:text="全部影院" />
</RadioGroup>
<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"/>
//继承v4包

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.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioGroup;

import com.bw.qgs.week201.fragment.FragMent1;
import com.bw.qgs.week201.fragment.FragMent2;

import java.util.ArrayList;

public class MainActivity extends FragmentActivity {

private ViewPager pager;
private RadioGroup rg;
private ArrayList<Fragment> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //找控件
    pager = findViewById(R.id.pager);
    rg = findViewById(R.id.rg);
    //Fragment集合
    list = new ArrayList<Fragment>();
    //添加FragMent
    list.add(new FragMent1());
    list.add(new FragMent2());
    //viewpager改变监听
    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
            //找到索引
            rg.check(rg.getChildAt(i).getId());
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });
    //按钮点击改变事件
    rg.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;
            }
        }
    });
    //适配器
    pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int i) {
            return list.get(i);
        }

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

}

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

<com.bawei.xlistviewlibrary.XListView
    android:id="@+id/xlistview1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
     />

工具类
import android.os.Handler;
import android.os.Message;

import com.google.common.io.CharStreams;

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

public class Gong {
public Gong(){}
public Gong get(final String path){
new Thread(){
@Override
public void run() {
super.run();
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(3000);
int responseCode = urlConnection.getResponseCode();
if(responseCode == 200){
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream);
String s = CharStreams.toString(reader);
Message message = Message.obtain();
message.obj = s;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
return this;
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String data = (String) msg.obj;
gong.getName(data);
}
};
private HttpGong gong;

public void getGong(HttpGong gong){
    this.gong = gong;
}

public interface HttpGong{
    void getName(String name);
}

}

界面1
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 com.bawei.xlistviewlibrary.XListView;
import com.bw.qgs.week201.Gong;
import com.bw.qgs.week201.R;
import com.bw.qgs.week201.adapter.ItemAdapter;
import com.bw.qgs.week201.bean.User;
import com.google.gson.Gson;

import java.util.ArrayList;

public class FragMent1 extends Fragment implements XListView.IXListViewListener {

private int cc = 10;
private String path = "http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=";
private XListView xlistview1;
private ItemAdapter adapter;
private ArrayList<User.ResultBean> list = new ArrayList<User.ResultBean>();

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.item1,container,false);
    //找控件
    xlistview1 = view.findViewById(R.id.xlistview1);
    //调用方法
    getInit();
    //打开
    xlistview1.setPullLoadEnable(true);
    xlistview1.setPullRefreshEnable(true);
    //设置监听
    xlistview1.setXListViewListener(this);
    return view;
}

private void getInit() {
    //封装工具类
    Gong gong = new Gong();
    gong.get(path+cc).getGong(new Gong.HttpGong() {

        @Override
        public void getName(String name) {
            Gson gson = new Gson();
            User user = gson.fromJson(name, User.class);
            //向集合添加
            list.addAll(user.getResult());
            //适配器
            adapter = new ItemAdapter(getContext(),list);
            xlistview1.setAdapter(adapter);
        }
    });
}

@Override
public void onRefresh() {
    //下拉刷新
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            doHttp(10);
            adapter.notifyDataSetChanged();
            handler.sendEmptyMessage(0);
        }
        //时间
    },3000);
}

@Override
public void onLoadMore() {
    //上拉加载
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            //自加
            cc++;
            doHttp(cc);
            adapter.notifyDataSetChanged();
            handler.sendEmptyMessage(0);
        }
        //时间
    },3000);
}
private void doHttp(int cc){
    new Gong().get(path+cc).getGong(new Gong.HttpGong() {
        @Override
        public void getName(String name) {
            Gson gson = new Gson();
            User user = gson.fromJson(name, User.class);
            list.addAll(user.getResult());
        }
    });
}
Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        adapter.notifyDataSetChanged();
        close();
    }

    private void close() {
        //停止刷新
        xlistview1.stopLoadMore();
        xlistview1.stopRefresh();
        //设置自定义时间
        long l = System.currentTimeMillis();
   Date date=new Date(l);
   SimpleDateFormat format=new SimpleDateFormat("HH:mm");
   xlistview1.setRefreshTime(format.format(date));
    }
};

}
界面2同理
依赖
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
compile ‘de.hdodenhof:circleimageview:2.0.0’
XListView展示/上拉加载/下拉刷新 数据改变

猜你喜欢

转载自blog.csdn.net/weixin_42791904/article/details/83036070