到官方网站上下载XListview SDK,把view中的三个java类,复制到工程中,布局中的三个布局文件也复制过去,Strings中也要复制
public class Fragment extends android.support.v4.app.Fragment {
private XListView lv;
private String pathUrl;
private MainAdapter adapter;
//集合和数组再用之前需要new出来
private List<Bean1.Data> dataList = new ArrayList<>();//适配数据集合
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment,container,false);
//获得控件
lv = (XListView) view.findViewById(R.id.main_fragment_lv);
//获得传值
Bundle arguments = getArguments();
pathUrl = arguments.getString("pathUrl", "");
//请求数据
getData(0);
//初始化事件
initEvent();
return view;
}
private void initEvent() {
//设置激活上拉加载更多
lv.setPullLoadEnable(true);
//下拉刷新
lv.setPullRefreshEnable(true);
//监听
lv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//下拉刷新
//清空集合数据
dataList.clear();
//刷新
getData(1);
//刷新时间
refreshTime();
}
@Override
public void onLoadMore() {
getData(2);
}
});
//lv条目监听
lv.setOnItemClickListener(itemListenr);
}
private void getData(final int i) {
new AsyncTask<String,Void,String>(){
@Override
protected String doInBackground(String... strings) {
try {
String path=strings[0];
URL url=new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
int code=conn.getResponseCode();
if(code==200){
InputStream is = conn.getInputStream();
//调用方法,读取流
String json = StreamTools.readData(is);
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
//把json串转成对象
Gson gson=new Gson();
Bean1 bean1 = gson.fromJson(s,Bean1.class);
//获得适配数据集合
List<Bean1.Data> data = bean1.getData();
//创建新集合,addAll()是添加集合的,add()是添加元素,把元素添加到集合
dataList.addAll(data);
//适配器
if(i == 0){//第一次加载
adapter = new MainAdapter(dataList,getContext());
lv.setAdapter(adapter);
}else if(i == 1 || i==2){//上拉,下拉状态
adapter.notifyDataSetChanged();
stopXlistView();//停止刷新
}
super.onPostExecute(s);
}
}.execute(pathUrl);
}
private void refreshTime() {
//设置刷新时间
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String time = format.format(date);
lv.setRefreshTime(time);
}
private void stopXlistView() {
//停止加载,刷新
lv.stopLoadMore();
lv.stopRefresh();
}
//条目监听
AdapterView.OnItemClickListener itemListenr=new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//跳转
Intent intent=new Intent(getContext(),WebViewActivity.class);
//传值
intent.putExtra("article_path",dataList.get(i-1).getArticle_url());
startActivity(intent);
}
};
}
注意:引用xlistview时需要引用全类名