import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.google.gson.Gson;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
private static final String jsonUrl ="http://www.gank.io/api/data/Android/10/1";
private List<News> list;
private XListView xListView;
private Myadapter myadapter;
List<News.ResultsBean> results;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
xListView = (XListView)findViewById(R.id.xlv);
xListView.setPullLoadEnable(true);//设置可以刷新和加载
xListView.setXListViewListener(this);
//刚进来,加载第一版数据
new AsyncTask<String,Integer,String>() {
@Override
protected String doInBackground(String... params) {
//线程加载数据
String str = new NetWorkUtils().getJsonByUrlConnection(jsonUrl);
return str;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
News news = gson.fromJson(s, News.class);
results = news.getResults();
myadapter = new Myadapter(MainActivity.this,results);
xListView.setAdapter(myadapter);
}
}.execute();
}
public void onLoad(){
xListView.stopRefresh();
xListView.stopLoadMore();
//获取当前时间
Date curDate = new Date(System.currentTimeMillis());
//格式化
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String time = formatter.format(curDate);
xListView.setRefreshTime(time);
}
//下拉调用此方法
@Override
public void onRefresh() {
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... params) {
//线程加载数据
String str = new NetWorkUtils().getJsonByUrlConnection(jsonUrl);
return str;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
News news= new Gson().fromJson(s,News.class);
results = news.getResults();//得到第一页数据
myadapter = new Myadapter( MainActivity.this,results);
xListView.setAdapter(myadapter);
onLoad();
}
}.execute();
}
@Override
public void onLoadMore() {
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... params) {
//线程加载数据
String str = new NetWorkUtils().getJsonByUrlConnection(jsonUrl);
return str;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
News news = new Gson().fromJson(s,News.class);
List<News.ResultsBean> newData = news.getResults();//得到下一条数据
results.addAll(newData); //把新的一页的数据集合,加到总的数据集合
myadapter.notifyDataSetChanged(); //刷新适配器,展示全部数据
onLoad();
}
}.execute();
}
}
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
public class Myadapter extends BaseAdapter {
private Context context;
private List<News.ResultsBean> list;
public Myadapter(Context context, List<News.ResultsBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public int getItemViewType(int position) {
return 1;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if(view== null ){
holder= new ViewHolder();
view = View.inflate(context, R.layout.item, null);
holder.textView = (TextView) view.findViewById(R.id.ltv);
view.setTag(holder);
}else {
holder =(ViewHolder) view.getTag();
}
holder.textView.setText(list.get(i).getDesc());
return view;
}
class ViewHolder{
TextView textView;
}
}