Xlistview中实现下拉刷新和上拉加载

一.实现下拉刷新和上拉加载
1.在Fragment中代码:

public class Fragment21 extends Fragment implements XListView.IXListViewListener{

private XListView xlistview1;
private int page=1;
private String dataUrl="http://www.xieast.com/api/news/news.php?page=";
private Myadapter myadapter;
private ArrayList<User.DataBean> list=new ArrayList<>();


Handler handler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case 0:
                String data = (String) msg.obj;
                Gson gson=new Gson();
                User user = gson.fromJson(data, User.class);
                //Toast.makeText(getActivity(),user.toString(),Toast.LENGTH_SHORT).show();
                List<User.DataBean> dataBeans = user.getData();
                list.addAll(dataBeans);
                myadapter.setList(list);
                close();
                break;
        }
    }
};


@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag21, container, false);
    //找控件
    xlistview1 = view.findViewById(R.id.xlistview1);

    //配置适配器
    myadapter = new Myadapter(getActivity());
    xlistview1.setAdapter(myadapter);



    //获取数据
    getData(page);

    xlistview1.setXListViewListener(this);
    //实现上拉刷新和下拉加载
    xlistview1.setPullRefreshEnable(true);
    xlistview1.setPullLoadEnable(true);

    return view;
}

private void getData(final int page) {
    new Thread(){
        @Override
        public void run() {
            super.run();
            try {
                URL url=new URL(dataUrl+page);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(3000);
                int code = connection.getResponseCode();
                if (code==HttpURLConnection.HTTP_OK){
                    InputStream inputStream = connection.getInputStream();
                    String s = CharStreams.toString(new InputStreamReader(inputStream, "UTF-8"));
                    Message message = Message.obtain();
                    message.what=0;
                    message.obj=s;
                    handler.sendMessage(message);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();

}

@Override
public void onRefresh() {
    list.clear();
    getData(1);
}

@Override
public void onLoadMore() {
    page++;
    getData(page);
}

public void close(){
    xlistview1.stopRefresh();;
    xlistview1.stopLoadMore();
    
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// HH:mm:ss
   //获取当前时间
    Date date = new Date(System.currentTimeMillis());
    xListView.setRefreshTime(""+simpleDateFormat.format(date));

}

}

2.在Adapter中:

public class Myadapter extends BaseAdapter {
private Context mcontext;
private List<User.DataBean> list = new ArrayList<>();

public Myadapter(Context mcontext) {
    this.mcontext = mcontext;## 标题
}

public void setList(List<User.DataBean> list) {
    this.list = list;
    notifyDataSetChanged();
}

@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) {
    ViewHodler hodler = null;
    if (convertView == null) {
        hodler = new ViewHodler();
        convertView = View.inflate(mcontext, R.layout.item_list1, null);
        hodler.mtitle1 = convertView.findViewById(R.id.mtitle1);
        hodler.image1 = convertView.findViewById(R.id.image1);
        hodler.image2 = convertView.findViewById(R.id.image2);
        hodler.image3 = convertView.findViewById(R.id.image3);
        hodler.url1 = convertView.findViewById(R.id.url1);
        convertView.setTag(hodler);
    } else {
        hodler = (ViewHodler) convertView.getTag();
    }

    User.DataBean bean = list.get(position);
    hodler.mtitle1.setText(bean.getTitle());
    hodler.url1.setText(bean.getDate());
    ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s(), hodler.image1, App.getoption());
    ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s02(), hodler.image2, App.getoption());
    ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s03(), hodler.image3, App.getoption());
    return convertView;
}

class ViewHodler {
    TextView mtitle1, url1;
    ImageView image1, image2, image3;
}

}

猜你喜欢

转载自blog.csdn.net/wzj_8899174/article/details/83049527