XListView请求网络数据的使用;
导入xListview
Activity实现 XListView.IXListViewListener
重写 onRefresh ,onLoad 方法
public class MainFragment2 extends Fragment implements XListView.IXListViewListener{ private String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; private int page; private XListView xlist_view; private MyAdapter myAdapter; private List<Product.DataBean> list; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.mainfragment2_layout, container, false); xlist_view = view.findViewById(R.id.xlist_view); list = new ArrayList<Product.DataBean>(); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); myAdapter = new MyAdapter(); xlist_view.setAdapter(myAdapter); getNetData(0); //设置xListView可以上拉加载更多功能 xlist_view.setPullLoadEnable(true); //设置接口的实现类;this指的是MainActivity自己;类似button的点击事件; xlist_view.setXListViewListener(this); } /** * 下拉刷新功能:请求服务器最新的数据 */ @Override public void onRefresh() { //清空集合 //重新请求数据的第一页 //更新适配器 list.clear(); getNetData(0); } /** * 上拉加载更多的功能, */ @Override public void onLoadMore() { //请求新的数据,把数据放入到大集合中 //更新适配器 //停止刷新ui page++; Log.e("ck",page+"--------------------"); getNetData(page); } private void getNetData(int page){ int netType = NetTypeUtil.getNetType(getActivity()); if (netType!=-1){ new MyAsyncTask().execute(urlString+page); } else { Toast.makeText(getActivity(),"请检查网络",Toast.LENGTH_LONG).show(); } } class MyAsyncTask extends AsyncTask<String,Void,String> { @Override protected String doInBackground(String... strings) { String netJson = NetUtil.getNetJson(strings[0]); return netJson; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Product product = gson.fromJson(s, Product.class); list.addAll(product.getData()); myAdapter.notifyDataSetChanged(); //让刷新头和刷新底部 消失; uiComplete(); } } private void uiComplete(){ xlist_view.stopRefresh();//让下拉刷新头消失 xlist_view.stopLoadMore();//让上拉加载的ui消失 xlist_view.setRefreshTime("刚刚"+System.currentTimeMillis()); } public class MyAdapter extends BaseAdapter { private ImageLoader imageLoaderInstance=ImageLoader.getInstance(); /** * @return 共有多少种条目类型 */ @Override public int getViewTypeCount() { return 2; } /** * 奇数条 返回 文字 * 偶数条 返回 图片加文字 * 获取条目视图类型 * @return 0代表偶数条 , 1代表技术条; * 返回值的int 值 只能从0开始排 0 ,1,3,4,5 */ @Override public int getItemViewType(int position) { return position % 2;//对2取余,返回值是0 或者1 } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int itemViewType = getItemViewType(i); switch (itemViewType){ case 0://偶数条目 返回文字+图片条目; ViewHolder1 holder1; if (view==null){ view=View.inflate(getActivity(), R.layout.item1_layout,null); holder1=new ViewHolder1(); holder1.img=view.findViewById(R.id.img); holder1.text1=view.findViewById(R.id.text1); holder1.text2=view.findViewById(R.id.text2); holder1.text3=view.findViewById(R.id.text3); view.setTag(holder1); } else { holder1= (ViewHolder1) view.getTag(); } imageLoaderInstance.displayImage(list.get(i).getPic_url(), holder1.img); holder1.text1.setText(list.get(i).getPic_url()); holder1.text2.setText(list.get(i).getNews_title()); holder1.text3.setText(list.get(i).getNews_summary()); break; case 1:// 奇数条,只返回文字条目 ViewHolder2 holder2; if (view==null){ view=View.inflate(getActivity(), R.layout.item2_layout,null); holder2=new ViewHolder2(); holder2.text4=view.findViewById(R.id.text4); holder2.text5=view.findViewById(R.id.text5); view.setTag(holder2); } else { holder2= (ViewHolder2) view.getTag(); } holder2.text4.setText(list.get(i).getNews_title()); holder2.text5.setText(list.get(i).getNews_summary()); break; } return view; } class ViewHolder1{ private ImageView img; private TextView text1; private TextView text2; private TextView text3; } class ViewHolder2{ private TextView text4; private TextView text5; } } }