将值从公共方法传递到私有数组

时间:2011-11-27 10:44:46

标签: java android arrays class methods

我需要存储从http检索到的大量内容。我已经创建了一个检索内容的方法。但是我需要将它存储在一个在外面声明的数组中。做返回值我遇到了麻烦。

我的问题是:

1)我在哪里发表退货声明?

2)如何将searchInfo中的内容存储到数组mStrings []?

这是我的代码。

public class MainActivity extends Activity
{
ListView list;
Adapter adapter;

private static final String targetURL ="http://www.google.com/images";

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

    list=(ListView)findViewById(R.id.list);
    adapter=new Adapter(this, mStrings);
    list.setAdapter(adapter);
    }

    public String searchInfo()
{
    try {
        // Get the URL from text box and make the URL object

        URL url = new URL(targetURL);

        // Make the connection
        URLConnection conn = url.openConnection();
        BufferedReader reader = new BufferedReader(
         new InputStreamReader(conn.getInputStream()));

        // Read the contents line by line (assume it is text),
        // storing it all into one string
        String content ="";
        String line = reader.readLine();  
        Pattern sChar = Pattern.compile("&.*?;");
        Matcher msChar = sChar.matcher(content);
        while (msChar.find()) content = msChar.replaceAll("");

        while (line != null) {

            if(line.contains("../../"))
            {                   
                content += xyz;
                line = reader.readLine();                   
            }

            else if (line.contains("../../") == false)
            {
                line = reader.readLine();
            }

        }

        // Close the reader
        reader.close();

    } catch (Exception ex) {
        ex.printStackTrace();
    }   

}

private String[] mStrings={searchImage()};

}

1 个答案:

答案 0 :(得分:2)

您有几个选择:

  1. 您可以将mStrings []声明为实例变量(将protected String[] mStrings;放在声明适配器的行之后),然后在onCreate方法(mStrings = new String[SIZE];)中初始化它,其中SIZE是您的数组的大小。之后,您的searchInfo方法只能向mString添加项目,而不必返回任何内容(因为实例变量对于该类的所有成员都是可见的)。

  2. 您可以更改searchInfo的签名,使其返回String[],然后在该方法中声明一个临时字符串数组,将项添加到其中并将其返回给调用者(mStrings = searchInfo();

  3. 在上述两种情况中,它假定您知道数组的长度(因此您可以初始化它)。您可以使用ArrayList而不是String数组,因为它们可以动态增长。然后,您可以使用以下命令将arrayList转换为数组:

    yourArrayList.toArray(mStrings);
    

    只要您将mStrings初始化为非null值(即mStrings = new String[1];