package com.example.xlistview; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import view.XListView; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private XListView xlv; private List<Result.DataBean> list = new ArrayList<>(); private MyAdapter adapter; private int index=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 xlv = (XListView) findViewById(R.id.xlv); //设置上拉下拉属性 xlv.setPullRefreshEnable(true); xlv.setPullLoadEnable(true); //设置适配器 adapter = new MyAdapter(); xlv.setAdapter(adapter); //获取数据 Datainit(); xlv.setXListViewListener(this); DisplayImageOptions options = new DisplayImageOptions.Builder().build(); } //异步请求数据 class MyAsyncTask extends AsyncTask<String,Void,String>{ private String str = ""; @Override protected String doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(3000); connection.setConnectTimeout(3000); if (connection.getResponseCode() == 200){ InputStream inputStream = connection.getInputStream(); str=streamToString(inputStream); } } catch (Exception e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Result json = gson.fromJson(str, Result.class); List<Result.DataBean> data = json.getData(); Log.d("zzz", data.toString()+"--------------"); list.addAll(data); adapter.notifyDataSetChanged(); } } public String streamToString(InputStream is){ StringBuilder sb = new StringBuilder(); String con; BufferedReader br = new BufferedReader(new InputStreamReader(is)); try { while ((con=br.readLine())!=null){ sb.append(con); } } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } //获取数据的方法 private void Datainit() { MyAsyncTask myAsyncTask = new MyAsyncTask(); myAsyncTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=5"); } class MyAdapter extends BaseAdapter{ @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; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if (view == null){ view = View.inflate(MainActivity.this, R.layout.item, null); holder = new ViewHolder(); holder.tv1 = (TextView)view.findViewById(R.id.tv1); holder.tv2 = (TextView) view.findViewById(R.id.tv2); holder.img = (ImageView) view.findViewById(R.id.img); view.setTag(holder); }else{ holder = (ViewHolder) view.getTag(); } holder.tv1.setText(list.get(i).getTitle()); holder.tv2.setText(list.get(i).getIntroduction()); ImageLoader.getInstance().displayImage(list.get(i).getImg(),holder.img); return view; } class ViewHolder{ TextView tv1; TextView tv2; ImageView img; } } //关闭 public void onLoad(){ xlv.stopRefresh(); xlv.stopLoadMore(); xlv.setRefreshTime("刚刚"); } @Override public void onRefresh() { list.clear(); Datainit(); onLoad(); } @Override public void onLoadMore() { Datainit(); onLoad(); } }
XlistView正确实现
最新推荐文章于 2019-01-06 18:03:11 发布