1:说到XlistView其实它和ListView一样都是用于展示数据使用的控件,XListView继承ListView它与listview不同的是,它封装可以下拉刷新,上拉加载更多的方法,我们只需要重写它的方法即可实现刷新与加载更多的操作。
2:使用XListView需要导入lib包,然后添加到当前module中就可以使用。
核心代码如下:
package com.example.xlistviewdemo; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.xlistviewlibrary.tools.UrlConnectionTools; import com.example.xlistviewlibrary.view.XListView; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { String url = "http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id=0&qtime=20160411091603"; private XListView xListView; private List<Bean.ResultBean.RowsBean> list = new ArrayList<>(); private ImageLoader instance; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化Xlistview控件 xListView = (XListView) findViewById(R.id.xlistview); //得到图片框架 instance = ImageLoader.getInstance(); initdata(); myAdapter = new MyAdapter(); xListView.setAdapter(myAdapter); xListView.setXListViewListener(this); xListView.setPullLoadEnable(true); } // 关联适配器 private void initdata() { MyAsyncTask myAsyncTask = (MyAsyncTask) new MyAsyncTask().execute(url); } class MyAsyncTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { return UrlConnectionTools.getJson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); Bean.ResultBean result = bean.getResult(); List<Bean.ResultBean.RowsBean> rows = result.getRows(); list.addAll(rows); myAdapter.notifyDataSetChanged(); } } //自定义适配器 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 vh; if (view == null) { vh = new ViewHolder(); view = View.inflate(MainActivity.this, R.layout.item, null); vh.title = (TextView) view.findViewById(R.id.wenzi); vh.icon = (ImageView) view.findViewById(R.id.tupian); view.setTag(vh); } else { vh = (ViewHolder) view.getTag(); } vh.title.setText(list.get(i).getInfo().getLoupan_name()); instance.displayImage(list.get(i).getInfo().getDefault_image(), vh.icon); return view; } } // 优化控件类 class ViewHolder { TextView title; ImageView icon; } //此方法用于刷新所做的操作 @Override public void onRefresh() { list.clear(); initdata(); shezhi(); } //此方法用于加载更多是所做的操作 @Override public void onLoadMore() { initdata(); shezhi(); } private void shezhi() { xListView.stopRefresh(); xListView.stopLoadMore(); Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM月dd号HH时mm分"); String format = simpleDateFormat.format(date); xListView.setRefreshTime(format); } }