Android - Wie man bestimmte Daten aus URL/JSON?

Also ich habe diesen code, der eine Seite mit einem ListView Suchfeld und ein button zum bestätigen der Suche, wenn Sie die Taste gedrückt, wird die ListView ist gefüllt mit Film-Namen aus der Rotten Tomatoes-API, Das problem ist, dass jemand half mir mit diesem code, und ich würde lieben, einige helfen, es brechen und verstehen es, Satz nach Satz, Mein Ziel ist ist es, den "Titel", "synopsis" und "Bild-url" ein Film, auf den geklickt wurde, in der Liste aus, und geben es mit der Absicht, meine andere Tätigkeit, sondern das ganze JSON und spezifische Daten Zeug, hat mich sehr verwirrt.

Link zu Rotten Tomatoes API-Dokumentation, das ist mein code:

public class MovieAddFromWeb extends Activity implements View.OnClickListener,
        OnItemClickListener {

    private TextView searchBox;
    private Button bGo, bCancelAddFromWeb;
    private ListView moviesList;
    public List<String> movieTitles;
    static final int ACTIVITY_WEB_ADD = 3;

    //the Rotten Tomatoes API key
    private static final String API_KEY = "8q6wh77s65aw435cab9rbzsq";

    //the number of movies to show in the list
    private static final int MOVIE_PAGE_LIMIT = 8;

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

        InitializeVariables();

    }

    /*
     * Initializing the variables and creating the bridge between the views from
     * the xml file and this class
     */

    private void InitializeVariables() {

        searchBox = (EditText) findViewById(R.id.etSearchBox);
        bGo = (Button) findViewById(R.id.bGo);
        bCancelAddFromWeb = (Button) findViewById(R.id.bCancelAddFromWeb);
        moviesList = (ListView) findViewById(R.id.list_movies);

        bGo.setOnClickListener(this);
        bCancelAddFromWeb.setOnClickListener(this);
        moviesList.setOnItemClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {

        case R.id.bGo:
            new RequestTask()
                    .execute("http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey="
                            + API_KEY
                            + "&q="
                            + searchBox.getText()
                            + "&page_limit=" + MOVIE_PAGE_LIMIT);
            break;

        case R.id.bCancelAddFromWeb:
            finish();
            break;

        }

    }

    private void refreshMoviesList(List<String> movieTitles) {
        moviesList.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, movieTitles
                        .toArray(new String[movieTitles.size()])));
    }

    private class RequestTask extends AsyncTask<String, String, String> {
        //make a request to the specified url
        @Override
        protected String doInBackground(String... uri) {
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response;
            String responseString = null;
            try {
                //make a HTTP request
                response = httpclient.execute(new HttpGet(uri[0]));
                StatusLine statusLine = response.getStatusLine();
                if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    response.getEntity().writeTo(out);
                    out.close();
                    responseString = out.toString();
                } else {
                    //close connection
                    response.getEntity().getContent().close();
                    throw new IOException(statusLine.getReasonPhrase());
                }
            } catch (Exception e) {
                Log.d("Test", "Couldn't make a successful request!");
            }
            return responseString;
        }

        @Override
        protected void onPostExecute(String response) {
            super.onPostExecute(response);

            try {
                //convert the String response to a JSON object
                JSONObject jsonResponse = new JSONObject(response);

                //fetch the array of movies in the response
                JSONArray jArray = jsonResponse.getJSONArray("movies");

                //add each movie's title to a list
                movieTitles = new ArrayList<String>();
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject movie = jArray.getJSONObject(i);
                    movieTitles.add(movie.getString("title"));

                }
                //refresh the ListView
                refreshMoviesList(movieTitles);
            } catch (JSONException e) {
                Log.d("Test", "Couldn't successfully parse the JSON response!");
            }
        }
    }

    @Override
    public void onItemClick(AdapterView<?> av, View view, int position, long id) {

        Intent openMovieEditor = new Intent(this, MovieEditor.class);
        openMovieEditor.putExtra("movieTitle", movieTitles.get(position));
        openMovieEditor.putExtra("callingActivity", ACTIVITY_WEB_ADD);
        startActivityForResult(openMovieEditor, ACTIVITY_WEB_ADD);

    }
}
  • breaking it down and understanding it sentence after sentence was ist es, das Sie nicht verstehen? Die Frage ist sehr vage!
  • Die ganze Art und Weise dieses "Lesen von url/website" Sache und der code, der mir erlaubt, es zu Lesen, ich kann nicht finden, ein guide/tutorial bricht es nach unten in eine gute und leicht verständliche Art und Weise, sorry für die nicht klar ist mit meiner bitte/Frage.
InformationsquelleAutor user1924895 | 2013-01-08
Schreibe einen Kommentar