//XListView主要是要实现条目的上拉加载和下拉刷新的功能
在使用的时候需要导入一个Module包(可以自己手写也可以向小编留言私发)
因为解析时需要网络权限和图片的解析等等,所以记得加权限和依赖等操作,准备就绪开始上代码
1.首先布局-------宽高ID无所谓但必须是xlistview.bawei.com.xlistviewlibrary.XListView这个控件
<xlistview.bawei.com.xlistviewlibrary.XListView 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/x_list_view" android:layout_height="match_parent" tools:context="zhangyanran201800808.bwie.com.day06two.activity.XListViewActivity"> </xlistview.bawei.com.xlistviewlibrary.XListView>
2.网络接口数据的解析小编使用了网络抽取工具类,具体步骤看上一篇文章 《抽取网络工具类+++++多条目展示》
3.Activityz中可以直接调用网络工具类,网络工具类调用后即可设置XListView的刷新和加载:例如:
//开启刷新 x_list_view.setPullLoadEnable(true); x_list_view.setPullRefreshEnable(true); //设置监听回调 x_list_view.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { //上拉刷新 type=5010; netUtils.getDataFromService(api+type); } @Override public void onLoadMore() { //下拉加载 type++; netUtils.getDataFromService(api+type); } }); //设置adapter展示数据 xListViewAdapter = new XListViewAdapter(XListViewActivity.this, dataBeanList); x_list_view.setAdapter(xListViewAdapter); //调用工具类 netUtils = NetUtils.getInstance(); netUtils.setNetCallback(new NetUtils.NetCallback() { @Override public void onSuccess(String result) { Gson gson = new Gson(); XListViewBean bean = gson.fromJson(result.replace("null(", "").replace(")", ""), XListViewBean.class); if (type==5010){ //将其他页面数据清除 dataBeanList.clear(); } //累积把加载的数据放到集合中 dataBeanList.addAll(bean.getData()); //刷新适配器 xListViewAdapter.notifyDataSetChanged(); //停止刷新和加载 x_list_view.stopRefresh(); x_list_view.stopLoadMore(); } }); netUtils.getDataFromService(api+type);
4.最后设置适配器
//根据数据和要求的不同可以在适配器中设置但条目或者多条目数据
//多条目数据的设置具体步骤看上一篇文章 《抽取网络工具类+++++多条目展示》
但条目的话,例如:
public class XListViewAdapter extends BaseAdapter{ Context context; List<XListViewBean.DataBean> dataBeanList; public XListViewAdapter(Context context, List<XListViewBean.DataBean> dataBeanList) { this.context = context; this.dataBeanList = dataBeanList; } @Override public int getCount() { return dataBeanList.size(); } @Override public Object getItem(int position) { return dataBeanList.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(); convertView = LayoutInflater.from(context).inflate(R.layout.xlistview_layout,null,false); holder.brief = convertView.findViewById(R.id.x_text); holder.lbImage = convertView.findViewById(R.id.x_image); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } //赋值 holder.brief.setText(dataBeanList.get(position).getBrief()); ImageLoader.getInstance().displayImage(dataBeanList.get(position).getLbimg().get(0).getSrc(),holder.lbImage); return convertView; } class ViewHolder { TextView brief; ImageView lbImage; } }
//XListView简单的使用步骤结束