【1】web 服务器返回的数据需以xml或Jason格式,如果直接String读取的话编码不对,equals()无法使用。
【2 ArrayList.add()操作覆盖前面数据】
先看代码:
Board board = new Board();
List<Board > boardList = new ArrayList<Board >();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance ();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser .setInput( new StringReader(xmlData ));
int eventType = xmlPullParser.getEventType();
String date = "";
int num = 0;;
String code = "";
while(eventType != XmlPullParser.END_DOCUMENT ){
String nodeName = xmlPullParser.getName();
switch(eventType ){
case XmlPullParser .START_TAG:{
if("date" .equals( nodeName)){
board.getDate(xmlPullParser.nextText());
}else if("num" .equals( nodeName)){
board.getNum(Integer.parseInt (xmlPullParser. nextText()));
}else if("code" .equals( nodeName)){
board.getCode(xmlPullParser.nextText());
}
break;
}
case XmlPullParser .END_TAG:{
if(user .equals( nodeName)){
boardList .add( board);
Log.i ("TAG", "add list:"+board. getDate());
}
break;
}
default:
break;
}
eventType = xmlPullParser. next();
}
结果显示,boardList中的每个元素都被最后一个元素覆盖,即每个元素的值都是最后一个元素。
这是因为,add( )方法添加的是对象的引用,每次都更新了这个引用的值,当然list里面的值都一样的。
正确的做法是在每个循环中都new 一个新的board,再对它赋值。
【3】调用系统相册打开指定目录的文件
Intent intent = new Intent(Intent .ACTION_VIEW);
intent .setDataAndType( Uri.parse ("file://"+ board.getSystemPath ()), "image/*" );
startActivity(intent );
【4】Android5.1系统上报Package Not Found, OpenCV library package was not found
原因,opencv manager 2.4.9版本太旧,不支持android5.1
换成opencv manager 2..4.11就可以了。
程序里面的opencv库仍然用2.4.9也没问题。