Создать массив из удаленного XML для Android - PullRequest
0 голосов
/ 20 июня 2011

У меня есть удаленный XML-файл, который я хочу использовать для заполнения списка.

В настоящее время у меня настроено приложение для создания списка из локального массива. Как заполнить массив, используя XML-файл, хранящийся в Интернете? В настоящее время массив находится в strings.xml

public class ArchiveListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(),
            R.array.archivetitle, R.layout.archiveitem));

    final String[] links = getResources().getStringArray(R.array.archivelinks);

    getListView().setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            String content = links[position];
            Intent showContent = new Intent(getApplicationContext(),
                    ArchiveViewerActivity.class);
            showContent.setData(Uri.parse(content));
            startActivity(showContent);
        }
    });
}
}

1 Ответ

0 голосов
/ 20 июня 2011

Вы, вероятно, можете сделать это в следующих шагах:

1> Подготовьте URI запроса, где присутствует xml.

prepareRequestUrl();

2> Получить ответ с веб-сервера:

/** 
 * fetch the response for the request url
 * @param request url string
 * @return InputStream
 */
public InputStream getResponse(String reqUrl) throws AppException {

    URL                 url             =   null;
    URLConnection       connection      =   null;
    HttpURLConnection   httpConnection  =   null;
    int                 reponseCode     =   0;
    InputStream         inputStream     =   null;

    try {

        url = new URL(reqUrl);

        connection = url.openConnection();

        httpConnection = (HttpURLConnection) connection;

        reponseCode = httpConnection.getResponseCode();

    } catch (MalformedURLException e) {

    } catch (IOException e) {

    }

    if (reponseCode == HttpURLConnection.HTTP_OK) {
        try {

            inputStream = httpConnection.getInputStream();

        } catch (IOException e) {

        }
    }
    else    {
        throw new AppException(AppConstants.HTTP_RESPONSE_FAILURE);
    }

    return inputStream;
}

3> Разбор входного потока xml, полученного с сервера:

                   inputStream = super.getResponse(requestUrl);             
        result= xmlParser.parseList(inputStream);

4> Показать соответствующий результат в виде списка.

Примечание. Всегда рекомендуется использовать асинхронную задачу для выполнения любой сетевой операции. Здесь в этом случае вызывается we-сервер.

Надеюсь, это поможет!

...