//XML的pull解析 以及上拉加载下拉刷新

//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");
    }
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值