1,清单
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>2,依赖
compile 'com.github.userswlwork:pull-to-refresh:1.0.0' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
3网络获取图片设置MApp
public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); }
4,
HttpUrlConnection联网获取json串
public static String getJson(String urldata) { try { URL url = new URL(urldata); HttpURLConnection httpurlConnection = (HttpURLConnection) url.openConnection(); httpurlConnection.setRequestMethod("GET"); httpurlConnection.setReadTimeout(8000); int responseCode = httpurlConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = httpurlConnection.getInputStream(); StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String json = ""; while ((json = bufferedReader.readLine()) != null) { stringBuilder.append(json); } return stringBuilder.toString(); } } catch (Exception e) { e.printStackTrace(); } return ""; }
5,main
private PullToRefreshListView plv; String url = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"; private LinkedList<Bean.NewslistBean> list; private List<Bean.NewslistBean> data; private MAdapter adapter; private ImageLoader instance; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); plv = (PullToRefreshListView) findViewById(R.id.flv); plv.setMode(PullToRefreshBase.Mode.BOTH); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { new MAsyncTask1().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { new MAsyncTask2().execute(); } }); initdata(); instance = ImageLoader.getInstance(); list =new LinkedList<Bean.NewslistBean>(); adapter=new MAdapter(); plv.setAdapter(adapter); } private void initdata() { new MAsynctask().execute(url); } class MAsyncTask1 extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); list.addAll(data ); adapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } class MAsyncTask2 extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); list.addAll(data); adapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } class MAsynctask extends AsyncTask<String ,Void,String>{ @Override protected String doInBackground(String... strings) { return HttpUrlConnection.getJson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); data = bean.getNewslist(); list.addAll(data); adapter.notifyDataSetChanged(); } } class MAdapter 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 int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { boolean b = position % 2 == 0; if (b) { return 0; } else { return 1; } } @Override public View getView(int i, View view, ViewGroup viewGroup) { int itemViewType = getItemViewType(i); switch (itemViewType) { case 0: ViewHolder0 viewHolder0; if (view == null) { viewHolder0 = new ViewHolder0(); view = View.inflate(MainActivity.this , R.layout.type0, null); viewHolder0.tupian = (ImageView) view.findViewById(R.id.img); viewHolder0.titles = (TextView) view.findViewById(R.id.tv); view.setTag(viewHolder0); } else { viewHolder0 = (ViewHolder0) view.getTag(); } instance.displayImage(list.get(i).getPicUrl(), viewHolder0.tupian); viewHolder0.titles.setText(list.get(i).getTitle()); break; case 1: ViewHolder1 viewHolder1; if (view == null) { viewHolder1 = new ViewHolder1(); view = View.inflate(MainActivity.this , R.layout.type1, null); viewHolder1.titles = (TextView) view.findViewById(R.id.tv); view.setTag(viewHolder1); } else { viewHolder1 = (ViewHolder1) view.getTag(); } viewHolder1.titles.setText(list.get(i).getTitle()); break; } return view; } class ViewHolder0 { ImageView tupian; TextView titles; } class ViewHolder1 { TextView titles; } }