一.实现下拉刷新和上拉加载
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;
}
}