XList集成分为几步
1.导入三个java文件:
2.导入xml文件:
3.导入图片和strings.xml或者复制:
<string name="xlistview_header_hint_normal">下拉刷新</string>
<string name="xlistview_header_hint_ready">松开刷新数据</string>
<string name="xlistview_header_hint_loading">正在加载...</string>
<string name="xlistview_header_last_time">上次更新时间:</string>
<string name="xlistview_footer_hint_normal">查看更多</string>
<string name="xlistview_footer_hint_ready">松开载入更多</string>
4.在activity.xml里写 :
<com.example.x.XListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/xlv"></com.example.x.XListView>
5.写代码(用到了AsyncTask)
package com.example.xlist2;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.example.bean.news;
import com.example.utils.NetWorkUtils;
import com.example.x.XListView;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
private XListView xlv;
private String url="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List<news.DataBean> list=new ArrayList<news.DataBean>();
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//调用initdata方法
initdata(url);
//找控件
xlv = (XListView) findViewById(R.id.xlv);
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(this);
adapter = new MyAdapter();
//创建适配器
xlv.setAdapter(adapter);
}
public void load(){
xlv.stopRefresh();
xlv.stopLoadMore();
xlv.setRefreshTime("");
}
public void initdata(String url){
new MysyncTask().execute(url);
}
//异步任务
class MysyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... params) {
String param = params[0];
String s = NetWorkUtils.conget(url);
return s;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson=new Gson();
news news = gson.fromJson(s, news.class);
List<com.example.bean.news.DataBean> data = news.getData();
list.addAll(data);
adapter.notifyDataSetChanged();//刷新适配器
}
}
//上拉刷新
@Override
public void onRefresh() {
list.clear();
initdata(url);
load();
}
//下拉加载
@Override
public void onLoadMore() {
initdata(url);
load();
}
class MyAdapter extends BaseAdapter{
@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) {
viewHalder sj;
if (convertView==null){
convertView= View.inflate(MainActivity.this,R.layout.items,null);
sj=new viewHalder();
sj.text1= (TextView) convertView.findViewById(R.id.text1);
sj.text2= (TextView) convertView.findViewById(R.id.text2);
convertView.setTag(sj);
}else{
sj= (viewHalder) convertView.getTag();
}
sj.text1.setText(list.get(position).getNews_title());
sj.text2.setText(list.get(position).getPic_url());
return convertView;
}
class viewHalder{
TextView text1,text2;
}
}
}