Загружает XML при нажатии кнопки и показывает в другом макете ANDROID

#java #android #xml

#java #Android #xml

Вопрос:

Я все еще работаю над своим первым приложением для Android, и у меня за плечами 3 дня Java. lol

Вопросы: 1. Возникают проблемы с отображением XML-данных (из сети), когда пользователь нажимает кнопку. 2. Отображение другого макета при загрузке XML. Я не понимаю, как вызываются / отображаются разные экраны (макеты). 3. при совместном использовании кода в Stackoverflow лучше всего размещать все здесь или использовать сторонний сайт?

Ниже приведен мой код, он не показывает ошибок после того, как я изменил extends Avtivity на extends ListActivity

patriotsar 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

Ответ №1:

Я чувствую, что проблема заключается в определении точного файла ресурсов. Пожалуйста, проверьте, каковы ваши инструкции импорта, ссылаетесь ли вы на android.R файл или com.patriotsar.R . если R.id.item_title определяется самостоятельно, пожалуйста, используйте свой собственный R-файл ie com.patriotsar.R . Также щелкните правой кнопкой мыши по проекту, выберите путь сборки, затем выберите версию Android sdk, которую вы хотите поддерживать. Если возможно, можете ли вы также опубликовать свой xml?

Спасибо Дипак

Комментарии:

1. основываясь на ваших заметках выше, я избавился от всех своих ошибок, обновив файл макета и добавив item_title и несколько других элементов. чтобы избавиться от ошибки getListView, мне пришлось изменить extends Activity на extends ListActivity. Но теперь приложение просто вылетает без ошибок. Пожалуйста, посмотрите мой код обновления выше.

2. Мы не можем запустить ваш код, потому что он зависит от другого файла Java и файла xml.

3. Извините, дипак, я добавил ссылку для загрузки пакета eclipse. Есть ли способ прикрепить файлы к публикации?