1.导入mxlistview-Android libary
2.新建Module,添加模块依赖
3.在布局中页面画出组件 包名、类名<xxx.xlistview>
4.类文件进行使用@1查找控件vxlistview@2xlv.setPullRefreshEnable(true);setPullLoadEnable(true)@3xml设置回调接口
import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.bawei.jane.mxlistview.view.XListView; import com.google.gson.Gson; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 第一步:导入 mxlistview模块,更新构建工具 * 第二步:新建自己的module,添加模块依赖 */ public class MainActivity extends AppCompatActivity { private XListView xlv; private int pageIndex=1; private String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex; //listview列表的集合 private List<ResultData.DataBean> data=new ArrayList<>(); private MyAdapter adapter; //1:刷新 2:加载更多 private int operType=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1.查找组件 xlv = findViewById(R.id.xlv); //2.进行配置 xlv.setPullRefreshEnable(true);//支持下拉刷新 xlv.setPullLoadEnable(true);//支持上拉加载更多 //设置监听回调接口 xlv.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() {//刷新 operType=1; pageIndex=1; url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex; requestNetData(); } @Override public void onLoadMore() {//加载更多 operType=2; pageIndex++; url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex; requestNetData(); } }); //请求网络数据 requestNetData(); } private void requestNetData() { MyTask task=new MyTask(); task.execute(url); } class MyTask extends AsyncTask<String,Void,String> { @Override protected String doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection connection =(HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); if(connection.getResponseCode()==200){ InputStream inputStream = connection.getInputStream(); String s=streamToString(inputStream); return s; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(s!=null){ Gson gson=new Gson(); ResultData resultData = gson.fromJson(s, ResultData.class); if(operType==1){ data.clear();//清空集合 } //添加新数据集合到,原来的集合数据中 data.addAll(resultData.getData()); setListViewAdapter(); if(operType==1){//刷新 //关闭头视图 xlv.stopRefresh(); Date date=new Date(System.currentTimeMillis()); SimpleDateFormat sformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String timeStr = sformat.format(date); xlv.setRefreshTime(timeStr);//设置刷新时间 }else { //关闭footer视图 xlv.stopLoadMore(); } } } } /** * 设置适配器 */ public void setListViewAdapter(){ if(adapter==null){ adapter = new MyAdapter(data,MainActivity.this); xlv.setAdapter(adapter); }else{ adapter.notifyDataSetChanged();//直接刷新 } } public String streamToString(InputStream stream){ ByteArrayOutputStream outputStream=null; try { outputStream = new ByteArrayOutputStream(); byte[] bytes=new byte[1024]; int len; while ((len=stream.read(bytes))!=-1){ outputStream.write(bytes,0,len); } } catch (IOException e) { e.printStackTrace(); } return outputStream.toString(); } }
//Myabapter适配器
import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; /** * Created by e531 on 2017/11/8. */ public class MyAdapter extends BaseAdapter { private List<ResultData.DataBean> datas; private Context context; public MyAdapter( List<ResultData.DataBean> datas, Context context) { this.datas = datas; this.context = context; } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View view, ViewGroup parent) { ViewHolderTitle holderTitle; if(view==null){ view=View.inflate(context,R.layout.item_title,null); holderTitle=new ViewHolderTitle(); holderTitle.textView=view.findViewById(R.id.tv); view.setTag(holderTitle); }else{ holderTitle=(ViewHolderTitle) view.getTag(); } holderTitle.textView.setText(datas.get(position).getTitle()); return view; } class ViewHolderTitle{ TextView textView; } }