Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android ListView不显示来自多个ArrayList的信息_Java_Android_Listview_Arraylist_Android Arrayadapter - Fatal编程技术网

Java Android ListView不显示来自多个ArrayList的信息

Java Android ListView不显示来自多个ArrayList的信息,java,android,listview,arraylist,android-arrayadapter,Java,Android,Listview,Arraylist,Android Arrayadapter,我最近一直在研究Android列表视图,我遇到了一些问题。我看了一些教程,得到了最基本的ListView。但是现在我想制作一个显示一系列对象的ListView。我以为我做的每件事都是对的。我的代码不会产生任何错误,但我希望创建的列表根本不会显示。显然,我不知道为什么 此应用程序的目的是编译气象站和机场的列表并显示信息(例如名称、ID#、坐标等)——所有这些信息都从XML文档中解析并包含在Arraylist中(由具有适当构造函数/getter/setter的单独类构建)。基本上,我会得到一个电台列

我最近一直在研究Android列表视图,我遇到了一些问题。我看了一些教程,得到了最基本的ListView。但是现在我想制作一个显示一系列对象的ListView。我以为我做的每件事都是对的。我的代码不会产生任何错误,但我希望创建的列表根本不会显示。显然,我不知道为什么

此应用程序的目的是编译气象站和机场的列表并显示信息(例如名称、ID#、坐标等)——所有这些信息都从XML文档中解析并包含在Arraylist中(由具有适当构造函数/getter/setter的单独类构建)。基本上,我会得到一个电台列表,然后从这个列表中得到一个设置为适配器的电台名称列表。我的ListView应该只显示每个站点的名称,但没有效果

我已经测试了我的解析器和数组。这一切都是可行的,只是什么都没有显示。根据所有的教程,我的逻辑应该是正确的,直到我的适配器。有人有什么建议吗?我觉得我用尽了所有的解决办法。我的代码发布在下面:

public class MainActivity extends Activity {

    //local variables
    String station_id;
    String state;
    String station_name;
    double latitude;
    double longitude;
    String html_url;

    //List of Station Objects
    public ArrayList<Station> StationList = new ArrayList<Station>();

Method for DOM Parser
  public void readXML(){

    try {

        //new xml file and Read
        File file1 = new File("src/fl_wx_index3.xml");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(file1);
        doc.getDocumentElement().normalize();

        NodeList nodeList = doc.getElementsByTagName("station");

        for (int i = 0; i < nodeList.getLength(); i++) {

            Node node = nodeList.item(i);

            if(node.getNodeType() == Node.ELEMENT_NODE){

                final Element first = (Element) node;

                station_id = first.getElementsByTagName("station_id").item(0).getTextContent();
                state = first.getElementsByTagName("state").item(0).getTextContent();
                station_name = first.getElementsByTagName("station_name").item(0).getTextContent();
                latitude = Double.parseDouble(first.getElementsByTagName("latitude").item(0).getTextContent());
                longitude = Double.parseDouble(first.getElementsByTagName("longitude").item(0).getTextContent());
                html_url = first.getElementsByTagName("html_url").item(0).getTextContent();

                //iterate thru list, returning names of each airport
                StationList.add(new Station(station_id, state, station_name, latitude, longitude, html_url));

            }

        }
        } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
        }

}



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //object for method call to read XML document
    MainActivity activity1 = new MainActivity();
    activity1.readXML();

     final ListView listview = (ListView) findViewById(R.id.listView1);

     //List to contain Weather station Names
     final ArrayList<String> nameList = new ArrayList<String>();

     for (int i = 0; i < StationList.size(); ++i) {
          nameList.add(StationList.get(i).getStationName());
        }

     //Array adapter
     final StableArrayAdapter adapter = new StableArrayAdapter(this,android.R.layout.simple_list_item_1, nameList);
     listview.setAdapter(adapter);  

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}
//Class creating Adapter
class StableArrayAdapter extends ArrayAdapter<String> {

HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();

public StableArrayAdapter(Context context, int textViewResourceId,
    List<String> objects) {
  super(context, textViewResourceId, objects);
  for (int i = 0; i < objects.size(); ++i) {
    mIdMap.put(objects.get(i), i);
  }
}

public long getItemId(int position) {
  String item = getItem(position);
  return mIdMap.get(item);
}

public boolean hasStableIds() {
  return true;
}

}
公共类MainActivity扩展活动{
//局部变量
字符串站id;
字符串状态;
字符串站名;
双纬度;
双经度;
字符串html_url;
//桩号对象列表
public ArrayList StationList=新建ArrayList();
DOM解析器的一种实现方法
public void readXML(){
试一试{
//新建xml文件并读取
File file1=新文件(“src/fl_wx_index3.xml”);
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(file1);
doc.getDocumentElement().normalize();
NodeList NodeList=doc.getElementsByTagName(“站点”);
for(int i=0;i
我想你的HashMap倒过来了。您希望它将listview位置(整数)映射到字符串。所以你想要HashMap

我仍然需要我的公共长getItemId(int位置)吗?切换整数和字符串会导致返回类型错误。已将其注释掉。但仍然没有显示任何内容。