0

重複の可能性:
edittextに書き込むことでxml解析で特定の値を取得する方法

このコードは、このコードの何が問題なのかをコンパイルしませんか?アプリケーションが予期せず停止したと言っていませんか?私はすべてを正しく行いましたか?EditTextそれをチェックしてください私は入力を取り、XMLファイルからその値をチェックして画面に表示 するを追加したいです私はこのチュートリアルに従いました

      static final String URL = "http://api.androidhive.info/pizza/?format=xml";
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_ID = "id";
static final String KEY_NAME = "name";
static final String KEY_COST = "cost";
static final String KEY_DESC = "description";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
       EditText et = (EditText)findViewById(R.id.editText1);

               ArrayList<HashMap<String, String>> menuItems = new 
     ArrayList<HashMap<String, String>>();

        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML
        Document doc = parser.getDomElement(xml); // getting DOM element

        NodeList nl = doc.getElementsByTagName(KEY_ITEM);
        // looping through all item nodes <item>
        for (int i = 0; i < nl.getLength(); i++) {
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();
            Element e = (Element) nl.item(i);
            // adding each child node to HashMap key => value
           if(parser.getValue(e, KEY_ID).equals(et.getText().toString())){

            map.put(KEY_ID, parser.getValue(e, KEY_ID));
            map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
            map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));
            map.put(KEY_DESC, parser.getValue(e, KEY_DESC));

            // adding HashList to ArrayList
            menuItems.add(map);
            }

      }
        // Adding menuItems to ListView
        ListAdapter adapter = new SimpleAdapter(this, menuItems,
                R.layout.list_item,
                new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
                        R.id.name, R.id.desciption, R.id.cost });

        setListAdapter(adapter);

        // selecting single ListView item
        ListView lv = getListView();
                // listening to single listitem click
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // getting values from selected ListItem
                String name = ((TextView) 
       view.findViewById(R.id.name)).getText().toString();
                String cost = ((TextView) 
    view.findViewById(R.id.cost)).getText().toString();
                String description = ((TextView) 
    view.findViewById(R.id.desciption)).getText().toString();

                // Starting new intent
                Intent in = new Intent(getApplicationContext(),  
    SingleMenuItemActivity.class);
                in.putExtra(KEY_NAME, name);
                in.putExtra(KEY_COST, cost);
                in.putExtra(KEY_DESC, description);
                startActivity(in);

            }
        });
    }
}

main.xmlファイル->>

          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical">
<!-- Main ListView 
     Always give id value as list(@android:id/list)
-->

  <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="596dp" />



    <EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" >

4

2 に答える 2

0

このコードを試してください、

public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
               EditText et = (EditText)findViewById(R.id.editText1);

                       ArrayList<HashMap<String, String>> menuItems = new 
             ArrayList<HashMap<String, String>>();

                XMLParser parser = new XMLParser();
                String xml = parser.getXmlFromUrl(URL); // getting XML
                Document doc = parser.getDomElement(xml); // getting DOM element

                NodeList nl = doc.getElementsByTagName(KEY_ITEM);
                // looping through all item nodes <item>
                for (int i = 0; i < nl.getLength(); i++) {
                    // creating new HashMap
                    Element e = (Element) nl.item(i);
                    // adding each child node to HashMap key => value
                   if(parser.getValue(e, KEY_ID).equals(et.getText().toString())){
                       String name = parser.getValue(e, KEY_NAME);
                       String cost = "Rs." + parser.getValue(e, KEY_COST);
                       String description = parser.getValue(e, KEY_DESC);
                       Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
                       in.putExtra(KEY_NAME, name);
                       in.putExtra(KEY_COST, cost);
                       in.putExtra(KEY_DESC, description);
                       startActivity(in);
                    }

              }
    }

クラスで、SingleMenuItemActivityを使用して値をフェッチします。

    String name = this.getIntent().getStringExtra("KEY_NAME");
String cost= this.getIntent().getStringExtra("KEY_NAME");
String description= this.getIntent().getStringExtra("KEY_DESC");

編集-

main.xmlファイル->>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical">


    <EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" />

</LinearLayout>

Activityクラスからアクティビティを拡張する

于 2012-11-08T08:23:32.620 に答える
0

layout.xmlが正しく形成されていません:

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >

次のように<EditText>タグを適切に終了する必要があります。/>

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />
于 2012-11-08T08:25:52.833 に答える