国とその国コードを含むこの.xmlファイルがあります。今、私は人々がリストのうちの一つの国を選びたいXMLを解析し、AndroidのAlertDialogに表示します。
<?xml version="1.0" encoding="UTF-8"?>
<landen>
<land>
<naam>Afghanistan</naam>
<code>AF</code>
</land>
<land>
<naam>Albani�</naam>
<code>AL</code>
</land>
<land>
<naam>Algerije</naam>
<code>DZ</code>
</land>
<land>
</landen>
:これは、それがどのように見えるかです。私はAlertDialogはすべてを表示するのがいいだろうが。
私は私のxmlファイルから値を取得する方法は、このようなものです:
protected ArrayList<Land> getLanden() {
ArrayList<Land> lijst = new ArrayList<Land>();
try {
DocumentBuilder builder =DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(getAssets().open("landenlijst.xml"));
NodeList nl = doc.getElementsByTagName("land");
for (int i=0;i<nl.getLength();i++) {
Node node = nl.item(i);
Land land = new Land();
land.land = Xml.innerHtml(Xml.getChildByTagName(node, "naam"));
land.landcode = Xml.innerHtml(Xml.getChildByTagName(node, "code"));
lijst.add(land);
}
Log.d("Gabug","Klaar met parsen");
Log.d("Gabug","Landen: " + lijst);
} catch (Exception e) {
e.printStackTrace();
}
return lijst;
}
そして私は私のAlertDialogを作るためにこれを使用する:
public void KiesLandMenu(){
ArrayList<Land> alleLanden = getLanden();
final CharSequence[] items = alleLanden.toArray(new CharSequence[alleLanden.size()]);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Kies land");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch (item){
case 0:
break;
case 1:
break;
case 2:
break;
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
この場合、私は知りませんDDMSは、ログを記録するときに、バイトコードなどを返します。その後、ArrayStoreExceptionのために強制終了します..
私の質問は次のとおりです。これを行うにはこれが最善の方法ですか?はいの場合は、どうすればArrayStoreExceptionを修正できますか?いいえ、私のユーザーに国を選択させる良い方法は何でしょうか? さらに、タップした国の登録方法を教えてください。
EDIT:
私は少し下のサンプルコードを変更し、私は今、NullPointerExceptionが取得..
public void KiesLandMenu(){
ArrayAdapter<Land> arrAdapter;
ArrayList<Land> alleLanden = getLanden();
arrAdapter = new ArrayAdapter<Land>(this, android.R.layout.simple_list_item_single_choice, alleLanden);
ListView list = (ListView)findViewById(R.layout.lijstview);
list.setAdapter(arrAdapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> list, View view, int position,
long id) {
Log.e("item clicked", String.valueOf(position));
}
});
}
NullPointerExceptionがおそらくAlertDialog
を拡張し、それを与えることができるlist.setAdapter(arrAdapter);
(ListView)findViewById(R.layout.lijstview)がnullを返しています。 R.id.lijstviewです。 – techiServices
レイアウトフォルダにlijstview.xmlを作成しましたが、Eclipseでエラーが表示されることはありません。 R.id.lijstviewをそこに置くとエラーが出るのですが。 – Galip
まずレイアウトをonCreateで設定する必要があります。私は下の私の答えを編集します。 – Zarah