ネットで何時間も検索しましたが、行き詰まりました。
xmlを解析するためのチュートリアルを使用しましたが、DOMxmlパーサーを使用するのが最善であるという結論に達しました。主に、解析するコンテンツに30個のアイテムしか含まれていないことが原因です。
xmlは次のように見えます:
<?xml version="1.0" encoding="UTF-8"?>
<sliderlist>
<item>
<urlslide>http://www.google.com</urlslide>
</item>
<item>
<urlslide>http://www.stackoverflow.com</urlslide>
</item>
</sliderlist>
DOMパーサー(ほとんどはチュートリアルから):
TextView urlslide[];
try {
URL url = new URL("http://www.mydomain.com/my.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("item");
/** Assign textview array lenght by arraylist size */
urlslide = new TextView[nodeList.getLength()];
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
urlslide[i] = new TextView(this);
Element fstElmnt = (Element) node;
NodeList nameList = fstElmnt.getElementsByTagName("urlslide");
Element nameElement = (Element) nameList.item(0);
nameList = nameElement.getChildNodes();
urlslide[i].setText(((Node) nameList.item(0)).getNodeValue());
//layout.addView(urlslide[i]);
}
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
そして、解析されたコンテンツが必要な部分は、配列を埋めます(values / resフォルダー内のxmlを使用するもの):
mTimer=new CountDownTimer(15000, 1000) {
String[] myArray = getResources().getStringArray(R.array.testArray);
//String[] myArray={"http://www.upc.nl/","http://www.google.com","http://www.flyerwall.nl"};
//<- String should be read from landingpage.
int currentIndex=0;
public void onTick(long millisUntilFinished) {
//if (currentIndex<myArray.length) {
//number.setText("seconds remaining: " + millisUntilFinished / 1000);
//currentIndex++;
//}
}
public void onFinish() {
if (currentIndex<myArray.length) {
//number.setText("done!");
mWebView.loadUrl(myArray[currentIndex]);
currentIndex++;
} else {
currentIndex=0;//reset current url to 0
if (currentIndex<myArray.length)
//number.setText("done!");
mWebView.loadUrl(myArray[currentIndex]);
currentIndex++;
mTimer.start(); //activate the loop
}
mTimer.start();//first time start
}
};
私はあまりにも多くのサンプルコードに行ったので、もう手がかりが得られませんでしたが、私の内臓は、それを完了するのはとても簡単なはずだと言います。