Java 当XML中的数据从服务器更改时自动刷新Listview

Java 当XML中的数据从服务器更改时自动刷新Listview,java,android,xml,xml-parsing,Java,Android,Xml,Xml Parsing,这是我从服务器解析XML并显示在列表视图中的代码。当数据从服务器更改时,我希望自动刷新以显示列表视图 package com.wafik; 导入java.io.InputStream; 导入java.net.URL; 导入javax.xml.parsers.SAXParser; 导入javax.xml.parsers.SAXParserFactory; 导入org.xml.sax.InputSource; 导入org.xml.sax.XMLReader; 导入android.app.Activi

这是我从服务器解析XML并显示在列表视图中的代码。当数据从服务器更改时,我希望自动刷新以显示列表视图

package com.wafik;
导入java.io.InputStream;
导入java.net.URL;
导入javax.xml.parsers.SAXParser;
导入javax.xml.parsers.SAXParserFactory;
导入org.xml.sax.InputSource;
导入org.xml.sax.XMLReader;
导入android.app.Activity;
导入android.os.Bundle;
导入android.os.Handler;
导入android.widget.ListView;
公共类VCTC扩展活动{
/**在首次创建活动时调用*/
私有列表视图列表视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView=(listView)findViewById(R.id.listView);
bindDataToListing();
}
public void bindDataToListing(){
试一试{
SAXParserFactory saxparser=SAXParserFactory.newInstance();
SAXParser=SAXParser.newSAXParser();
XMLReader=parser.getXMLReader();
ParsingClass pc=新的ParsingClass();
setContentHandler(pc);
URL=新URL(“我的URL”);
InputStream is=url.openStream();//使用此InputStream进行解析
parse(新的InputSource(is));
BindingData BindingData=新的BindingData(此,pc.name,
pc.address,pc.qua,pc.qua2);
setAdapter(bindingData);
}捕获(例外e){
e、 getMessage();
}
}
}
解析XML

package com.wafik;
导入java.util.ArrayList;
导入org.xml.sax.Attributes;
导入org.xml.sax.SAXException;
导入org.xml.sax.helpers.DefaultHandler;
公共类ParsingClass扩展了DefaultHandler{
ArrayList name=新的ArrayList();
ArrayList地址=新的ArrayList();
ArrayList qua=新的ArrayList();
ArrayList qua2=新的ArrayList();
@凌驾
public void startElement(字符串uri、字符串localName、字符串qName、,
属性)引发SAX异常{
startElement(uri、localName、qName、属性);
if(localName.equalsIgnoreCase(“时间”)){
tempStore=“”;
}else if(localName.equalsIgnoreCase(“街道名称”)){
tempStore=“”;
}else if(localName.equalsIgnoreCase(“交叉点编号”)){
tempStore=“”;
}else if(localName.equalsIgnoreCase(“交通状态”)){
tempStore=“”;
}否则{
tempStore=“”;
}
}
@凌驾
公共void endElement(字符串uri、字符串localName、字符串qName)
抛出SAX异常{
super.endElement(uri、localName、qName);
if(localName.equalsIgnoreCase(“时间”)){
name.add(tempStore);
}else if(localName.equalsIgnoreCase(“街道名称”)){
add(tempStore);
}else if(localName.equalsIgnoreCase(“交叉点编号”)){
质量添加(临时存储);
}else if(localName.equalsIgnoreCase(“交通状态”)){
qua2.添加(临时存储);
}
tempStore=“”;
}
私有字符串tempStore=“”;
@凌驾
公共无效字符(字符[]ch,整数开始,整数长度)
抛出SAX异常{
超级字符(ch、开始、长度);
tempStore+=新字符串(ch、start、length);
}
}
绑定数据

package com.wafik;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.text.Html;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.TextView;
公共类BindingData扩展BaseAdapter{
阵列列表时间;
ArrayList street_name;
ArrayList交叉口_no;
ArrayList交通状况;
充气机;
公共绑定数据(){
}
公共绑定数据(活动法案、ArrayList名称、,
ArrayList添加、ArrayList qua、ArrayList qua2){
this.time=名称;
this.street_name=add;
该交叉口_no=qua;
此.traffic_state=qua2;
充气机=(充气机)法
.getSystemService(上下文布局\充气机\服务);
}
@凌驾
public int getCount(){
返回时间.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
持有人;
if(convertView==null){
保持架=新保持架();
convertView=充气机充气(R.layout.listrow,null);
holder.txttime=(TextView)convertView.findViewById(R.id.name);
holder.txtstreet_name=(TextView)convertView.findViewById(R.id.address);
holder.txtintersection_no=(TextView)convertView.findViewById(R.id.quali);
holder.txttraffic_state=(TextView)convertView.findViewById(R.id.quali2);
convertView.setTag(支架);
}否则{
holder=(holder)convertView.getTag();
}
holder.txttime.setText(Html.fromHtml(“Time:+Time.get(position)));
holder.txtstreet\u name.setText(Html.fromHtml(“街道名称:”
+街道名称。获取(位置));
holder.txtintersection\u no.setText(Html.fromHtml(“交叉点编号:
+交叉口(位置);
holder.txtraffic\u state.setText(Html.fromHtml(“交通状态:”
+交通状态。获取(位置));
返回视图;
}
私人阶级持有者{
text查看txttime、txtstreet\u名称、txtCrossion\u编号、txttraffic\u状态;
}
}

首先,您需要一个对象
        public void addItem(YourItem item){
        this.yourItemList.add(item);
        notifyDataSetChanged();
    }
        public class YourItem{
        private String time;
        private String street_name;
        private String intersection_no;
        private String traffic_state;

        public YourItem(String time, String street_name, String intersection_no, String traffic_state) {
            this.time = time;
            this.street_name = street_name;
            this.intersection_no = intersection_no;
            this.traffic_state = traffic_state;
        }

        //Getters and Setters for your object fields 
    }
bindingData.notifyDataSetChanged();