import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
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;
public class MainActivity extends AppCompatActivity {
//上拉加载 下拉刷新
private XListView xlx;
private List<User.DataBean> data = new ArrayList<>();
private int openType=1;
private int pagerIndex=1;
private String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pagerIndex;
private ByteArrayOutputStream outputStream = null;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlx = findViewById(R.id.xlx);
xlx.setPullLoadEnable(true);//上拉
xlx.setPullRefreshEnable(true);//下拉
xlx.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
openType=1;
pagerIndex=1;
url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pagerIndex;
requestNewData();
}
@Override
public void onLoadMore() {
openType=2;
pagerIndex++;
url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pagerIndex;
requestNewData();
}
});
//请求网络
requestNewData();
}
private void requestNewData() {
MyTask myTask=new MyTask();
myTask.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.setConnectTimeout(5000);
connection.setReadTimeout(5000);
if(connection.getResponseCode()==200){
InputStream inputStream = connection.getInputStream();
String s = streamToString(inputStream);
return s;
}
} catch (Exception e) {
e.printStackTrace();
Log.d("zzz","----"+e.getMessage().toString());
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s!=null){
Gson gson=new Gson();
User user = gson.fromJson(s, User.class);
if(openType==1){
data.clear();
}
data.addAll(user.getData());
setListViewAdapter();
if(openType==1){
xlx.stopRefresh();
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = format.format(date);
xlx.setRefreshTime(format1);
}else{
xlx.stopLoadMore();
}
}
}
}
private void setListViewAdapter() {
if(adapter ==null){
adapter = new MyAdapter();
xlx.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}
}
private String streamToString(InputStream inputStream) {
try {
outputStream = new ByteArrayOutputStream();
byte[] b=new byte[1024];
int len;
while((len=inputStream.read(b))!=-1){
outputStream.write(b,0,len);
}
} catch (IOException e) {
e.printStackTrace();
Log.d("zzz","----"+e.getMessage().toString());
}
String s=outputStream.toString();
Log.d("zzz","----"+s);
return s;
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
view=View.inflate(MainActivity.this,R.layout.item,null);
}
TextView tv= view.findViewById(R.id.tv);
tv.setText(data.get(i).getTitle());
return view;
}
}
}
mxlistview 一个炸包 必须添加 否则上拉下刷没效果
implementation files('libs/gson-2.2.4.jar')
记得联网
//MainActivity的副本
<com.bawei.jane.mxlistview.view.XListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/xlx"
></com.bawei.jane.mxlistview.view.XListView>
//item
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
/>