添加一个library工程,并修改build.gradle
compileSdkVersion 25
buildToolsVersion “25.0.2”
targetSdkVersion 25
还要依赖okhttp:3.8.0 和gson 2.8.0
MainActivity类:
public class MainActivity extends AppCompatActivity implements PullToRefreshListView.OnRefreshListener2 {
private PullToRefreshListView pull;
private int currentPage = 1;
private ArrayList<String> list;
private HomeAdapter homeAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
getDataforServer();
}
private void getDataforServer() {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url("http://v.juhe.cn/weather/index?format=2&cityname=北京&key=e7a94c85b65930fdb88bc0698416287c").build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.code() == 200) {
String str = response.body().string();
Log.d("haha",""+str);
Gson gson = new Gson();
Bean bean = gson.fromJson(str, Bean.class);
final List<Bean.ResultBean.FutureBean> list = bean.getResult().getFuture();
runOnUiThread(new Runnable() {
@Override
public void run() {
homeAdapter.setData(list);
homeAdapter.notifyDataSetChanged();
}
});
} else {
Log.d("myMessage", "" + response.message());
}
}
});
}
private void initData() {
homeAdapter = new HomeAdapter(this);
pull.setAdapter(homeAdapter);
pull.setMode(PullToRefreshBase.Mode.BOTH);
}
private void initView() {
pull = (PullToRefreshListView) findViewById(R.id.pull);
pull.setOnRefreshListener(this);
ListView refreshableView = pull.getRefreshableView();
}
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
refreshData();
}
private void refreshData() {
currentPage = 1;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pull.onRefreshComplete();
getDataforServer();
}
},2000);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
loadMore();
}
private void loadMore() {
currentPage++;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pull.onRefreshComplete();
getDataforServer();
}
},2000);
}
}
创建适配器:
public class HomeAdapter extends BaseAdapter {
private Context mcontext;
private List<Bean.ResultBean.FutureBean> list = new ArrayList<>();
public HomeAdapter(Context context) {
this.mcontext = context;
}
@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) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = convertView.inflate(mcontext, R.layout.home_item, null);
viewHolder.textView = (TextView) convertView.findViewById(R.id.te);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(list.get(position).getTemperature());
return convertView;
}
public void setData(List<Bean.ResultBean.FutureBean> data) {
if (data != null) {
this.list.addAll(data);
}
}
static class ViewHolder {
TextView textView;
}
}