- 首先导入依赖:gson、imageLoader
compile ‘com.google.code.gson:gson:2.2.4’
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
- 在布局文件中:
<com.bwie.xlistviewlibrary.View.XListView
android:id="@+id/xlv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3"
/>
子布局。。。。。。。。
然后在activity中处理一些数据。。。。
/**
- Oncreat()方法中的操作
*/
- Oncreat()方法中的操作
private int type = 1;
private int pages = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv = (XListView) findViewById(R.id.xlv);
//加载更多
xlv.setPullLoadEnable(true);
//下拉刷新
xlv.setPullRefreshEnable(true);
//给xlistview设置监听事件
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
type = 1;
pages = 1;
new MyTask().execute(path);
}
@Override
public void onLoadMore() {
type = 2;
pages++;
new MyTask().execute("http://api.tianapi.com/mobile/?key=d28c274e60a1a76155e97dc199dbfacc&num=10&page="+pages);
}
});
new MyTask().execute(path);
}
自定义一个MyTask类
class MyTask extends AsyncTask<String,String,String> {
private List<Bean.NewslistBean> newslist;
@Override
protected String doInBackground(String... strings) {
String path = strings[0];
try {
/*
得到当前需要的path
*/
URL url = new URL(path);
/**
* 得到网络请求
*/
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
/**
* 设置延时时间
*/
connection.setConnectTimeout(3000);
//得到请求方式
connection.setRequestMethod("GET");
//得到请求码
int responseCode = connection.getResponseCode();
/*
判断是否请求成功
*/
if (responseCode == 200) {
int len;
byte[] b = new byte[1024 * 20];
InputStream inputStream = connection.getInputStream();
outputStream = new ByteArrayOutputStream();
while ((len = inputStream.read(b)) != -1) {
outputStream.write(b,0,len);
}
}
return outputStream.toString();//返回数据信息
} catch (Exception e) {
e.printStackTrace();
}
return null;//返回空
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
/**
* 转换json串
*/
Bean json = gson.fromJson(s, Bean.class);
newslist = json.getNewslist();
if(type==1){
list.clear();
list.addAll(newslist);
MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);
xlv.setAdapter(adapter1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd HH:mm:ss");
String s = format.format(date);
xlv.setRefreshTime(s);
xlv.stopRefresh();
}
},1000);
}else if(type==2){
list.addAll(newslist);
MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);
xlv.setAdapter(adapter1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
xlv.stopLoadMore();
}
},1000);
}
}
}
自定义一个Adapter进行展示数据
public class MyAdapter extends BaseAdapter {
Context context;
List<Bean.NewslistBean> list;
public MyAdapter(Context context,List<Bean.NewslistBean> list){
this.context = context;
this.list=list;
}
@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;
}
/**
* 优化,展示数据
* 无viewHolder 详情看博客的详细细节
*/
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(i%2==0){
if(view==null){
view = View.inflate(context, R.layout.main_item,null);
}
ImageView iv = view.findViewById(R.id.iv);
TextView tv = view.findViewById(R.id.tv);
String s = list.get(i).getPicUrl();
ImageLoader.getInstance().displayImage(s,iv);
tv.setText(list.get(i).getTitle());
return view;
}else{
if(view==null){
view = View.inflate(context, R.layout.main_item1,null);
}
ImageView iv1 = view.findViewById(R.id.iv1);
TextView tv1 = view.findViewById(R.id.tv1);
String s1 = list.get(i).getPicUrl();
ImageLoader.getInstance().displayImage(s1,iv1);
tv1.setText(list.get(i).getTitle());
return view;
}
}
}