public class MainActivity extends AppCompatActivity { static String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; private PullToRefreshListView ptr; private UserDao dao; List<DataBeans.DataBean> list = new ArrayList<DataBeans.DataBean>(); private ImageLoader instance; int page; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { String ss = (String) msg.obj; //添加 dao.addData(urlString + page, ss); //解析 Gson gson = new Gson(); DataBeans dataBeans = gson.fromJson(ss, DataBeans.class); List<DataBeans.DataBean> data = dataBeans.getData(); list.addAll(data); adapter.notifyDataSetChanged(); ptr.onRefreshComplete(); } } }; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 ptr = (PullToRefreshListView) findViewById(R.id.ptr); //设置模式 ptr.setMode(PullToRefreshBase.Mode.BOTH); //获取dao类 dao = new UserDao(MainActivity.this); //Imageloader的实体类 instance = ImageLoader.getInstance(); //设置适配器 adapter = new MyAdapter(); ptr.setAdapter(adapter); //获取数据的方法 getData(0); //刷新监听 ptr.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { list.clear(); getData(0); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { page++; getData(page); } }); } private void getData(int page) { final String url = urlString + page; //判断网络 if (NetStates.getType(MainActivity.this) != -1) { Toast.makeText(MainActivity.this, "有网啦!", Toast.LENGTH_SHORT).show(); new Thread() { @Override public void run() { super.run(); String json = NetHttpUrl.getJson(url); Message msg = new Message(); msg.obj = json; msg.what = 0; handler.sendMessage(msg); } }.start(); } else { Toast.makeText(MainActivity.this, "无网络,请重试!", Toast.LENGTH_SHORT).show(); //查询 String s = dao.queryData(url); //判断 if (!s.isEmpty()) { //解析 Gson gson = new GsonBuilder().create(); DataBeans dataBeans = gson.fromJson(s, DataBeans.class); List<DataBeans.DataBean> data = dataBeans.getData(); list.addAll(data); adapter.notifyDataSetChanged(); ptr.onRefreshComplete(); } } } private 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.holder, null); holder = new ViewHolder(); holder.name = view.findViewById(R.id.name); holder.img = view.findViewById(R.id.img); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } //赋值 holder.name.setText(list.get(i).getNews_title()); DisplayImageOptions options = ImageLoaderUntils.getOptions(); instance.displayImage(list.get(i).getPic_url(), holder.img, options); return view; } } class ViewHolder { private ImageView img; private TextView name; } }
<com.handmark.pulltorefresh.library.PullToRefreshExpandableListView android:id="@+id/ptr" android:layout_width="match_parent" android:layout_height="match_parent"></com.handmark.pulltorefresh.library.PullToRefreshExpandableListView>
<ImageView android:layout_marginLeft="20dp" android:id="@+id/img" android:layout_width="80dp" android:layout_height="80dp" android:src="@mipmap/ic_launcher_round"/> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name"/>