java - 单击按钮时加载 XML 并以不同布局 ANDROID 显示

标签 java android xml

仍在开发我的第一个 Android 应用程序,并且我已经学习了 3 天的 Java。哈哈

问题: 1. 当用户单击按钮时,显示 XML 数据(来自网络)时出现问题。 2. 加载 XML 时显示不同的布局。我不明白如何调用/显示不同的屏幕(布局)。 3. 在 Stackoverflow 上共享代码时,最好将所有内容发布到此处还是使用第三方网站?

下面是我的代码,在我将扩展 Avtivity 更改为扩展 ListActivity 后,它没有显示任何错误

爱国者java:

    package com.patriotsar;




import java.util.ArrayList;
import java.util.HashMap;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.patriotsar.XMLfunctions;


import android.app.ListActivity;

import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;









public class patriosar extends ListActivity {

    private Button goButton;
    private Button quoteButton;

    String url = "http://www.patriotsar.com";
    Intent i = new Intent(Intent.ACTION_VIEW);
    Uri u = Uri.parse(url);
    Context context = this;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);



        goButton = (Button)findViewById(R.id.goButton);
        quoteButton = (Button)findViewById(R.id.quoteButton);

        goButton.setOnClickListener(new OnClickListener() {         
            @Override
            public void onClick(View v){
                try {
                      // Start the activity
                        i.setData(u);
                      startActivity(i);
                    } catch (ActivityNotFoundException e) {
                      // Raise on activity not found
                      Toast.makeText(context, "Browser not found.", Toast.LENGTH_SHORT);
                    }
                  } 
        });

        quoteButton.setOnClickListener(new OnClickListener() {         
            @Override
            public void onClick(View v){
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();


                String xml = XMLfunctions.getXML();
                Document doc = XMLfunctions.XMLfromString(xml);

                int numResults = XMLfunctions.numResults(doc);

                if((numResults <= 0)){
                    Toast.makeText(patriosar.this, "Geen resultaten gevonden", Toast.LENGTH_LONG).show();  
                    finish();
                }

                NodeList nodes = doc.getElementsByTagName("result");

                for (int i = 0; i < nodes.getLength(); i++) {                           
                    HashMap<String, String> map = new HashMap<String, String>();    

                    Element e = (Element)nodes.item(i);
                    map.put("id", XMLfunctions.getValue(e, "id"));
                    map.put("name", "Naam:" + XMLfunctions.getValue(e, "name"));
                    map.put("Score", "Score: " + XMLfunctions.getValue(e, "score"));
                    mylist.add(map);            
                }       
//               
                ListAdapter adapter = new SimpleAdapter(patriosar.this, mylist , R.layout.main, 
                                new String[] { "name", "Score" }, 
                                new int[] { R.id.item_title, R.id.item_subtitle });

                setListAdapter(adapter);

                final ListView lv = getListView();
                lv.setTextFilterEnabled(true);  
                lv.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
                        @SuppressWarnings("unchecked")
                        HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);                   
                        Toast.makeText(patriosar.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_LONG).show(); 

                    }
                });



                }

         });

     }
    }

下面是我的 eclipse 包的链接,其中包含所有文件 Eclipse Package download

最佳答案

我觉得问题在于识别准确的资源文件。 请检查您的导入语句是什么,无论您是指 android.R 文件还是 com.patriotsar.R。如果R.id.item_title是您自己定义的,请使用您自己的R文件,即com.patriotsar.R。另外右键单击项目选择构建路径,然后选择您想要支持的 android sdk 版本。如果可能的话你也可以发布你的xml吗?

谢谢 迪帕克

关于java - 单击按钮时加载 XML 并以不同布局 ANDROID 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183357/

相关文章:

android - 实现父子双方的可点击 View

php - 读取所有带有用户ID的mysql数据库项

java - servlet接收xml数据时出错

PHP DOM : Get Nodevalue without descendant nodes

java - 对一些 Java out.Write 输出感到好奇

java - 为什么 HashMap 大小与文件中的行数不同?

java - 计算字符串中子字符串的出现次数

android - 在开发和实时 Android 构建中对常量使用不同的值

xml - 为什么我从 getElementsByTagName 得到 "Invalid predicate"错误?

java - 添加到listView的顶部