package com.bwie.myxlistviewdemo; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutCompat; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.google.gson.Gson; import com.limxing.xlistview.view.XListView; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.List; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { int index=0; private XListView xlv; private Myadapter adapter; private boolean flag = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xlv = (XListView) findViewById(R.id.xlv); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); loadData("http://apis.juhe.cn/cook/query.php", "1", "5"); } private void loadData(String path, String pn, String rn) { System.out.println("*******************************loadData"); new AsyncTask<String, Void, String>() { @Override protected String doInBackground(String... params) { System.out.println("*******************************doInBackground"); String path = params[0]; String pn = params[1]; String rn = params[2]; try { HttpURLConnection connection = (HttpURLConnection) new URL(path).openConnection(); connection.setRequestMethod("POST"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); OutputStream os = connection.getOutputStream(); os.write(("menu=" + URLEncoder.encode("红烧肉", "utf-8") + "&key=85ccc6561e8247986f378b20ef34589a&pn=" + pn + "&rn=" + rn).getBytes()); os.flush(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { System.out.println("*******************************HTTP_OK"); InputStream is = connection.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 0; byte[] bytes = new byte[1024]; while ((len = is.read(bytes)) != -1) { baos.write(bytes, 0, len); } is.close(); baos.close(); System.out.println("*******************************"+baos.toString()); return baos.toString(); } } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { System.out.println("*******************************onPostExecute"); super.onPostExecute(s); if (s == null) { return; } Gson gson = new Gson(); MenuInfo menuInfo = gson.fromJson(s, MenuInfo.class); List<MenuInfo.ResultBean.DataBean> data = menuInfo.getResult().getData(); if (adapter == null) { adapter = new Myadapter(data); xlv.setAdapter(adapter); } else { adapter.loadMore(data, flag); adapter.notifyDataSetChanged(); } } }.execute(path, pn, rn); } @Override public void onRefresh() { System.out.println("*******************************onRefresh"); index++; flag = true; loadData("http://apis.juhe.cn/cook/query.php", index+"", "5"); xlv.stopRefresh(true); } @Override public void onLoadMore() { System.out.println("*******************************onLoadMore"); index++; flag = false; loadData("http://apis.juhe.cn/cook/query.php", index+"", "5"); xlv.stopLoadMore(); } class Myadapter extends BaseAdapter { List<MenuInfo.ResultBean.DataBean> data; public Myadapter(List<MenuInfo.ResultBean.DataBean> data) { this.data = data; } public void loadMore(List<MenuInfo.ResultBean.DataBean> datas, boolean flag) { for (MenuInfo.ResultBean.DataBean da : datas) { if (flag) { data.add(0, da); } else { data.add(da); } } } @Override public int getCount() { return data != null ? data.size() : 0; } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null){ convertView= convertView.inflate(getApplicationContext(),R.layout.item,null); } TextView textView = (TextView) convertView.findViewById(R.id.tv); textView.setText(data.get(position).getTitle()); return textView; } } }
上下拉刷新
最新推荐文章于 2024-04-13 15:52:11 发布