代码不编译?

时间:2012-11-08 07:29:41

标签: android android-edittext

  

可能重复:
  how to get specific value in xml parsing by write in edittext

这段代码不能编译什么错误?是不是说应用程序意外停止我做了正确的一切?请检查一下我要添加一个EditText来获取输入并检查XML文件中的值并在屏幕上显示我跟着this Tutorial

      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文件 - &gt;&gt;

          <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" >

2 个答案:

答案 0 :(得分: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文件 - &gt;&gt;

<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班级

扩展您的活动

答案 1 :(得分: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" />