【问题标题】:Convert Object array to List将对象数组转换为列表
【发布时间】:2015-10-29 13:53:08
【问题描述】:
private Object loadXmlFromNetwork(String urlString) throws XmlPullParserException, IOException {
        InputStream stream = null;
        // Instantiate the parser
        StackOverflowXmlParser stackOverflowXmlParser = new StackOverflowXmlParser();
        List<StackOverflowXmlParser.Entry> entries = null;

最后用对象广告填充条目

return entries

这个方法正在返回那里

protected List<StackOverflowXmlParser.Entry> doInBackground(String... urls) {
        try {

            return loadXmlFromNetwork(urls[0]);

        } catch (IOException e) {
            mException = e;
        } catch (XmlPullParserException e) {
            mException = e;
        }
        return null;
    }

现在我必须将列表返回到方法。 我怎么能这样做

【问题讨论】:

标签: java android list listview


【解决方案1】:

改变你的私有方法的返回类型:

private List<StackOverflowXmlParser.Entry> loadXmlFromNetworkloadXmlFromNetwork(String urlString) throws XmlPullParserException, IOException {

并返回列表:

return entries;

或进行演员表:

  protected List<StackOverflowXmlParser.Entry> doInBackground(String... urls) {
    try {

        return (List<StackOverflowXmlParser.Entry>)loadXmlFromNetwork(urls[0]);

【讨论】:

    【解决方案2】:

    如果方法loadXmlFromNetwork(String urlString) 应该返回List,那么你应该更新它的返回类型来指定。具体的外观取决于您打算如何使用返回值,但很可能您只是想要

    List<StackOverflowXmlParser.Entry> loadXmlFromNetwork(String urlString)  // ...
    

    然后,该方法必须遵循其声明。它已经返回了具有正确类型的引用,但是为了使您的方法有用,您必须将局部变量 entries 初始化为对合适的 List 的引用,并使用所需的条目填充该列表。可能会这样开始:

    entries = new ArrayList<>();
    

    【讨论】:

      【解决方案3】:
      protected List<StackOverflowXmlParser.Entry> doInBackground(String... urls) {
          try {
      
              List<StackOverflowXmlParser.Entry> data = (List<StackOverflowXmlParser.Entry>) loadXmlFromNetwork(urls[0]);
      
          } catch (IOException e) {
              mException = e;
          } catch (XmlPullParserException e) {
              mException = e;
          }
          return null;
      }
      

      【讨论】:

      • 必须导致“类型不匹配:无法从 Object 转换为 ...”
      • 这是为什么呢?他们不是同一类型吗?
      • 没有。私有方法返回 Object 并且 doInBackground 必须交付 List。如果不强制转换或更改方法的返回类型,这是不可能的
      • 你说得对,我完全错过了那个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2014-12-20
      相关资源
      最近更新 更多