
关于android自定义xml文件 调用、读取、使用pull方式解析得到集合并作为数据源绑定到listView上显示
想实现个分类查询电话号码的例子,比如外送电话---肯德基麦当劳;银行电话---中国银行、工商银行等等。第一个activity显示分类,跳转到第二个activity显示具体...
想实现个分类查询电话号码的例子,比如外送电话---肯德基 麦当劳;银行电话---中国银行、工商银行等等。第一个activity显示分类,跳转到第二个activity显示具体的子分类,然后点击子分类的任意数据,弹出对话框 提示拨号。
InputStream input = this.getClass().getClassLoader().getResourceAsStream("restaurant.xml");
try {
listBean = getrestaurant(input);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(listBean.size());
// listView = (ListView) findViewById(R.id.listView);
//
// List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();//初始化,simpleAdapter 需要绑定的数据是List<Map<String,Object>>类型的
// for(int i = 0; i<listBean.size(); i++)
// {
// Map<String,Object> item = new HashMap<String, Object>();
// item.put("name", i+"");
// item.put("phone",);
// data.add(item);
// }
// SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data, R.layout.particular, new String[]{"name","phone"}, new int[]{R.id.username,R.id.userphone});
// listView.setAdapter(adapter);//绑定数据
//tv.setText(getString(listBean.size()));
}
public List<restaurantBean> getrestaurant(InputStream input)
throws Exception {
List<restaurantBean> list = null;
restaurantBean rb = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(input, "UTF-8");
int event = parser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<restaurantBean>();
break;
case XmlPullParser.START_TAG:
if ("restaurant".equals(parser.getName())) {
rb = new restaurantBean();
rb.setId(Integer.parseInt(parser.getAttributeValue(0)));
}
if (rb != null) {
if ("name".equals(parser.getName())) {
rb.setName(parser.nextText());
} else if ("phone".equals(parser.getName())) {
rb.setPhone(Integer.parseInt(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if ("restaurant".equals(parser.getName())&&rb!=null) {
list.add(rb);
rb = null;
}
break;
}
event = parser.next();
}
return list;
}
getrestaurant(InputStream input)这个方法是用来实现pull解析xml的。
InputStream input = this.getClass().getClassLoader().getResourceAsStream("restaurant.xml");关于这个读取xml文件 路径应该怎么写?还有restaurant.xml这个文件应该存放在哪?看网上说应该是res/xml/restaurant.xml 这样 那自己创建一个res下的xml文件夹 放进去就行?
这边返回的集合用这种方式:List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data, R.layout.particular, new String[]{"name","phone"},new int[], {R.id.username,R.id.userphone}); 这个new int[]要写什么 item.put("name", i+"");
// item.put("phone",——————这个?);
// data.add(item); 非常感谢!!!! 展开
InputStream input = this.getClass().getClassLoader().getResourceAsStream("restaurant.xml");
try {
listBean = getrestaurant(input);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(listBean.size());
// listView = (ListView) findViewById(R.id.listView);
//
// List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();//初始化,simpleAdapter 需要绑定的数据是List<Map<String,Object>>类型的
// for(int i = 0; i<listBean.size(); i++)
// {
// Map<String,Object> item = new HashMap<String, Object>();
// item.put("name", i+"");
// item.put("phone",);
// data.add(item);
// }
// SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data, R.layout.particular, new String[]{"name","phone"}, new int[]{R.id.username,R.id.userphone});
// listView.setAdapter(adapter);//绑定数据
//tv.setText(getString(listBean.size()));
}
public List<restaurantBean> getrestaurant(InputStream input)
throws Exception {
List<restaurantBean> list = null;
restaurantBean rb = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(input, "UTF-8");
int event = parser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<restaurantBean>();
break;
case XmlPullParser.START_TAG:
if ("restaurant".equals(parser.getName())) {
rb = new restaurantBean();
rb.setId(Integer.parseInt(parser.getAttributeValue(0)));
}
if (rb != null) {
if ("name".equals(parser.getName())) {
rb.setName(parser.nextText());
} else if ("phone".equals(parser.getName())) {
rb.setPhone(Integer.parseInt(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if ("restaurant".equals(parser.getName())&&rb!=null) {
list.add(rb);
rb = null;
}
break;
}
event = parser.next();
}
return list;
}
getrestaurant(InputStream input)这个方法是用来实现pull解析xml的。
InputStream input = this.getClass().getClassLoader().getResourceAsStream("restaurant.xml");关于这个读取xml文件 路径应该怎么写?还有restaurant.xml这个文件应该存放在哪?看网上说应该是res/xml/restaurant.xml 这样 那自己创建一个res下的xml文件夹 放进去就行?
这边返回的集合用这种方式:List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), data, R.layout.particular, new String[]{"name","phone"},new int[], {R.id.username,R.id.userphone}); 这个new int[]要写什么 item.put("name", i+"");
// item.put("phone",——————这个?);
// data.add(item); 非常感谢!!!! 展开
1个回答
展开全部
的inputStream读取文件,读取完成后记得inputStream.close()。 4.调用AssetManager.close()关闭AssetManager。 这个布局是需要在xml布局。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询