//XML的pull解析 以及上拉加载下拉刷新 public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private String path="http://www.oschina.net/action/api/tweet_list?pageIndex=1"; private List<User> list; private List<User> list1; private User user; private XListView listView; private Myadepert adepert; private Handler handler; int i=1,j=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (XListView) findViewById(R.id.listview); //允许加载 listView.setPullLoadEnable(true); //设置监听 listView.setXListViewListener(this); huodejiexishuju(path); listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // String pv="http://www.oschina.net/action/api/tweet_detail?id="+list1.get(position-1).getId(); Intent inte=new Intent(MainActivity.this,TwoActivity.class); inte.putExtra("path", list1.get(position).getId()); startActivity(inte); return false; } }); handler=new Handler(); } private void huodejiexishuju(String pa) { new AsyncTask<String,Void,List<User>>(){ @Override protected List<User> doInBackground(String... params) { try { URL url=new URL(params[0]); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setReadTimeout(5000); connection.setReadTimeout(5000); connection.setRequestMethod("GET"); connection.connect(); if(connection.getResponseCode()==200){ InputStream inpu= connection.getInputStream(); list1= pulllist(inpu); return list1; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<User> users) { super.onPostExecute(users); if(users!=null){ adepert=new Myadepert(users,MainActivity.this); listView.setAdapter(adepert); } } }.execute(pa); } private List<User> pulllist(InputStream inpu) { try { XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser(); parser.setInput(inpu, "utf-8"); //获取事件类型 int eventType=parser.getEventType(); while(eventType!=XmlPullParser.END_DOCUMENT){ String name=parser.getName(); switch (eventType) { case XmlPullParser.START_DOCUMENT: //实例化集合 list=new ArrayList<User>(); break; case XmlPullParser.START_TAG: //实例化集合 if(name.equals("tweet")){ user=new User(); }else if(name.equals("id")){ user.setId(parser.nextText()); } else if(name.equals("portrait")){ user.setPortrait(parser.nextText()); } else if(name.equals("author")){ user.setAuthor(parser.nextText()); } else if(name.equals("body")){ user.setBody(parser.nextText()); } else if(name.equals("imgSmall")){ user.setImgSmall(parser.nextText()); } else if(name.equals("pubDate")){ user.setPubDate(parser.nextText()); } break; case XmlPullParser.END_TAG: //实例化集合 if(name.equals("tweet")){ list.add(user); } break; default: break; } eventType=parser.next(); } } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return list; } @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { i=i+1; String path="http://www.oschina.net/action/api/tweet_list?pageIndex="+i; huodejiexishuju(path); listView.stopRefresh(); } },2000); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { j=i-1; String path="http://www.oschina.net/action/api/tweet_list?pageIndex="+j; huodejiexishuju(path); listView.stopLoadMore(); } },2000); } public void onload(){ listView.setRefreshTime("now"); } }